I. Abstract
OGC API — Tiles is a standard defining building blocks to create Web APIs allowing to retrieve geospatial information as tiles. Different forms of geospatial information are supported, such as tiles of vector features (“vector tiles”), coverages, maps (or imagery) and other types of geospatial information. Although it can be used independently, the OGC API — Tiles building blocks can be combined with other OGC API standards and draft specifications for additional capabilities or increasing interoperability for specific types of data. The OGC API — Tiles standard references the OGC Two Dimensional Tile Matrix Set (TMS) and Tileset Metadata standard, which defines logical models and encodings for specifying tile matrix sets and describing tile sets. A tile matrix set is a tiling scheme allowing to partition and index space based on a set of regular grids defined for multiple scales in a Coordinate Reference System (CRS).
This specification is a successor to the OGC’s previous Web Map Tile Service (WMTS) standards versions, focusing on simple reusable REST API building blocks which can be described using the OpenAPI specification. Whereas WMTS focused on map tiles, the OGC API — Tiles standard has been designed to support any form of tiled data.
II. Keywords
The following are keywords to be used by search engines and document catalogues.
ogcdoc, OGC document, tiling, tiles, WMTS, map tiles, vector tiles, tiled feature data
III. Preface
This document defines the OGC API — Tiles — Part 1: Core standard. A web API conforming to this standard can serve tiles of spatially referenced data or maps with predefined content, extent, and resolution. Suggested additions, changes and comments on this standard are welcome and encouraged. Such suggestions may be submitted using the GitHub repository issues: https://github.com/opengeospatial/ogcapi-tiles .
Attention is drawn to the possibility that some of the elements of this document may be the subject of patent rights. The Open Geospatial Consortium shall not be held responsible for identifying any or all such patent rights.
Recipients of this document are requested to submit, with their comments, notification of any relevant patent claims or other intellectual property rights of which they may be aware that might be infringed by any implementation of the standard set forth in this document, and to provide supporting documentation.
IV. Security considerations
No security considerations have been made for this document.
V. Submitting Organizations
The following organizations submitted this Document to the Open Geospatial Consortium (OGC):
- Universitat Autònoma de Barcelona (CREAF)
- US Army Geospatial Center
- Ecere Corporation
- Esri
VI. Submitters
All questions regarding this submission should be directed to the editor or the submitters:
| Name | Affiliation |
| Joan Masó | Universitat Autònoma de Barcelona (CREAF) |
| Chuck Heazel | Heazel Tech |
| Jeff Harrison | US Army Geospatial Center |
| Jérôme Jacovella-St-Louis | Ecere Corporation |
| Satish Sankaran | Esri |
OGC API - Tiles - Part 1: Core
1. Scope
This document specifies the behavior of Web APIs that provide access to tiles of one or more geospatial data resource (collection) or from the whole dataset that the Web API offers. This standard defines how to discover which resources offered by the Web API can be retrieved as tiles, get metadata about the available tile sets (including according to which tile matrix set each tile set is partitioned and the limits of that tile set within a common potentially global tile matrix set) and how to request a tile.
The core conformance class is defined in a way that could be easily included in a web API that does not conform to the OGC API — Common standard. A web API can combine some requirements classes of this OGC API standard with other OGC API standards (including OGC API — Common) to extend the scope of the Web API by adding functionality.
2. Conformance
This standard defines fifteen requirements conformance classes.
The standardization targets of all conformance classes are “Web APIs”.
The requirements classes are:
2.1. Requirements classes defining resources
Requirements Class “Core” (http://www.opengis.net/spec/ogcapi-tiles-1/1.0/req/core)
The Core specifies requirements that all Web APIs have to implement if they are claiming to support tiles from a geospatial resource following this OGC API — Tiles Part 1: Core standard. It defines how to retrieve individual tiles by building a URI from three variables corresponding to the tile matrix, tile row and tile column for that tile.
Table 1 — Overview of resource and common direct link that corresponds to tiles defined in core conformance class
| Resource name | Common path |
|---|---|
| Tile | …/{tileMatrix}/{tileRow}/{tileCol} |
NOTE This path template is recommended, but not prescribed. Ordering the parameters differently within the URI is allowed. | |
Requirements Class “TileSet” (http://www.opengis.net/spec/ogcapi-tiles-1/1.0/req/tileset)
The tileset conformance class defines a mechanism to describe a tileset using a specific tile matrix set and obtain a templated link to individual tiles.
Table 2 — Overview of resources and common direct links that correspond to the tileset
| Resource name | Common path |
|---|---|
| Tileset | …/tiles/{tileMatrixSetId} |
| Tile | …/tiles/{tileMatrixSetId}/{tileMatrix}/{tileRow}/{tileCol} |
Requirements Class “TileSets List” (http://www.opengis.net/spec/ogcapi-tiles-1/1.0/req/tilesets-list)
The tilesets list conformance class defines a generic operation to retrieve a list of tilesets, without association to any particular type of resources.
Table 3 — Overview of resource and common direct link that corresponds to the tileset list
| Resource name | Common path |
|---|---|
| Tileset list | …/tiles |
2.2. Requirements classes defining data origins
Requirements Class “Dataset TileSets” (http://www.opengis.net/spec/ogcapi-tiles-1/1.0/req/dataset-tilesets)
The dataset tilesets conformance class allows retrieving tiles for a whole dataset potentially made up of multiple geospatial data resources. All Web APIs have to implement this conformance class if they are claiming to support dataset tiles following this OGC API — Tiles Part 1: Core standard. Dataset tiles may combine content from multiple geospatial resources, regardless of whether those are available separately (as tiles or otherwise).
Table 4 — Overview of resource and common direct links that corresponds to the dataset tileset
| Resource name | Common path |
|---|---|
| Vector tileset list | /tiles |
| Map tileset list | /map/tiles |
| Styled Map tileset list | /styles/{styleId}/map/tiles |
Requirements Class “GeoData TileSets” (http://www.opengis.net/spec/ogcapi-tiles-1/1.0/req/geodata-tilesets)
The geodata tilesets conformance class allows retrieving tiles from a specific geospatial data resource.
Table 5 — Overview of resource and common direct links that corresponds to the geospatial data resources tilesets
| Resource name | Example of possible paths |
|---|---|
| Vector tileset list | /collections/{collectionId}/tiles |
| Map tileset list | /collections/{collectionId}/map/tiles |
| Styled Map tileset list | /collections/{collectionId}/styles/{styleId}/map/tiles |
2.3. Requirements classes defining query parameters
Requirements Class “Collections Selection” (http://www.opengis.net/spec/ogcapi-tiles-1/1.0/req/collections-selection)
The tiles geodata selection conformance class allows to list specific geospatial data resources from which to retrieve tiles, e.g. for use with data set tiles.
Table 6 — Overview of resource and common direct links that corresponds to the geodata selection
| Resource name | Example of possible paths |
|---|---|
| Vector Tileset | /tiles/{tileMatrixSetId}?collections={collectionId},{collectionId},… |
| Vector Tile | /tiles/{tileMatrixSetId}/{tileMatrix}/{tileRow}/{tileCol}?collections={collectionId},{collectionId},… |
| Map tileset | /map/tiles/{tileMatrixSetId}?collections={collectionId},{collectionId},… |
| Map tile | /map/tiles/{tileMatrixSetId}/{tileMatrix}/{tileRow}/{tileCol}?collections={collectionId},{collectionId},… |
Requirements Class “DateTime” (http://www.opengis.net/spec/ogcapi-tiles-1/1.0/req/datetime)
The datetime conformance class specifies how to provide tiles in a domain that has a generic time dimension.
2.4. Requirements classes for specific resource representations
Requirements Class “OpenAPI Specification 3.0 API definition” (http://www.opengis.net/spec/ogcapi-tiles-1/1.0/req/oas30)
The OpenAPI Specification 3.0 conformance class specifies requirements for an OpenAPI 3.0 definition in addition to those defined in OGC API — Common — Part 1: Core.
Requirements Class “XML TileSet Metadata” (http://www.opengis.net/spec/ogcapi-tiles-1/1.0/req/xml)
The XML conformance class specifies how to use XML as an alternative encoding for describing tilesets.
Requirements Classes for tile encodings
This standard does not mandate a specific encoding or format for representing tiles and remains flexible and extensible to other formats that users and providers might need. However, requirements classes are provided for the following common tile formats:
PNG (http://www.opengis.net/spec/ogcapi-tiles-1/1.0/req/png)
JPEG (http://www.opengis.net/spec/ogcapi-tiles-1/1.0/req/jpeg)
TIFF (http://www.opengis.net/spec/ogcapi-tiles-1/1.0/req/tiff)
NetCDF (http://www.opengis.net/spec/ogcapi-tiles-1/1.0/req/netcdf)
GeoJSON (http://www.opengis.net/spec/ogcapi-tiles-1/1.0/req/geojson)
Mapbox Vector Tiles (http://www.opengis.net/spec/ogcapi-tiles-1/1.0/req/mvt)
All these conformance classes act as building blocks that should be implemented in combination with other more fundamental conformance classes that provide support for Web API discovery, conformity and Web API formal definition (e.g., OpenAPI). Possible alternatives for these fundamental conformance classes are OGC API — Common Part 1: Core, OGC API — Features Part 1: Core or any other non-OGC classes that provide this functionality.
All requirements-classes and conformance-classes described in this document are owned by the standard(s) identified.
NOTE Despite the fact that full paths and full path templates in the previous tables are used in many implementations of the OGC API — Tiles, these exact paths are ONLY examples and are NOT required by this standard. Other paths are possible if correctly described by the Web API definition document and the links between resources.
2.5. Declaration of conformance
Conformance with this standard shall be checked using all the relevant tests specified in Annex A (normative) of this document if the respective conformance URLs listed in Table 7 is present in the conformance response. The framework, concepts, and methodology for testing, and the criteria to be achieved to claim conformance are specified in the OGC Compliance Testing Policies and Procedures and the OGC Compliance Testing web site.
Table 7 — Conformance class URIs
3. Normative references
The following documents are referred to in the text in such a way that some or all of their content constitutes requirements of this document. For dated references, only the edition cited applies. For undated references, the latest edition of the referenced document (including any amendments) applies.
Carl Reed: OGC 19-014r3, Topic 22 — Core Tiling Conceptual and Logical Models for 2D Euclidean Space. Open Geospatial Consortium (2020). https://docs.ogc.org/as/19-014r3/19-014r3.html.
Joan Masó , Jérôme Jacovella-St-Louis: OGC 17-083r4, OGC Two Dimensional Tile Matrix Set and Tile Set Metadata. Open Geospatial Consortium (2022). https://docs.ogc.org/is/17-083r4/17-083r4.html.
Charles Heazel: OGC API — Common — Part 1: Core (Draft). OGC 19-072, Open Geospatial Consortium, http://docs.ogc.org/DRAFTS/19-072.html
Charles Heazel: OGC API — Common — Part 2: Geospatial Data (Draft). OGC 20-024, Open Geospatial Consortium, http://docs.ogc.org/DRAFTS/20-024.html
NOTE Certain conformance classes have a dependency on OGC API — Common — Part 1: Core or OGC API — Common — Part 2: Geospatial data. In some cases, it is possible to replace these dependencies with OGC 17-069r3 OGC API — Features — Part 1: Core.
4. Terms and definitions
This document uses the terms defined in OGC Policy Directive 49, which is based on the ISO/IEC Directives, Part 2, Rules for the structure and drafting of International Standards. In particular, the word “shall” (not “must”) is the verb form used to indicate a requirement to be strictly followed to conform to this document and OGC documents do not use the equivalent phrases in the ISO/IEC Directives, Part 2.
This document also uses terms defined in the OGC Standard for Modular specifications (OGC 08-131r3), also known as the ‘ModSpec’. The definitions of terms such as standard, specification, requirement, and conformance test are provided in the ModSpec.
For the purposes of this document, the following additional terms and definitions apply.
4.1. Terms and definitions
This document uses the terms defined in Sub-clause 5.3 of OGC Web Services Common (OGC 06-121r9), which is based on the ISO/IEC Directives, Part 2, Rules for the structure and drafting of International Standards. In particular, the word “shall” (not “must”) is the verb form used to indicate a requirement to be strictly followed to conform to this standard.
This document also uses terms defined in Sub-clause “Terms and Definitions” of OGC API — Common, Part 1: Core.
For the purposes of this document, the following additional terms and definitions apply.
4.1.1. coverage tile
tile that contains information, often in a gridded form, where the values represent observations or measurements as a count, or quantity using some unit of measure
Note 1 to entry: Coverage tiles are generated in combination with OGC API — Coverages, and can also be generated by combining a subset (trim) and resampling operation. When stored in gridded form, these tiles are a type of raster tiles. Usually, visualizing a coverage tile on a rendering device implies mapping those values to colors.
4.1.2. dataset
a set of data, published or curated by a single agent, and available for access or download in one or more representations (modified from DCAT: https://www.w3.org/TR/vocab-dcat-2/#dcat-scope).
Note 1 to entry: A Web API implementing OGC API — Common often gives access to a single dataset which may be comprised of one or more geospatial data resources.
4.1.3. geospatial data resource
web resource that consists in a set of geospatial data
Note 1 to entry: In Web APIs implementing OGC API — Common — Part 2: Geospatial data, geospatial data resources are referred to as collections and are defined in the collections conformance class.
Note 2 to entry: geodata is sometimes used in this document as an abbreviation of geospatial data
4.1.4. geospatial aspect
web resource that represents a component of geospatial information (metadata, schemas…) or geospatial data accessed using a particular mechanism and data model (e.g., feature items, tiles, maps, coverages,…) of a more generic geospatial data resource (e.g., a collection)
Note 1 to entry: Not to be confused with a web resource representation. While resource representations share the same path and are selected by format negotiation, geospatial aspects use different paths. Commonly a geospatial aspect is a subpath of a geospatial data resource.
4.1.5. map tile
tile that contains information in a gridded form where the values of cells are colors which can be readily displayed on rendering devices
Note 1 to entry: Map tiles are generated in combination with OGC API — Maps. These tiles are a type of raster tiles.
4.1.6. tile
geometric shape with known properties that may or may not be the result of a tiling (tessellation) process. A tile consists of a single connected “piece” without “holes” or “lines” (topological disc).
In the context of a 2D tile matrix, a tile is one of the rectangular regions of space, which can be uniquely identified by a row and a column integer indices, making up the tile matrix.
In the context of a geospatial data tile set, a tile contains data for such a partition of space as part of an overall set of tiles for that tiled geospatial data.
Note 1 to entry: From OGC 19-014r1: Core Tiling Conceptual and Logical Models for 2D Euclidean Space
Note 2 to entry: From OGC 17-083r4: OGC Two Dimensional Tile Matrix Set
Note 3 to entry: Tiles are useful to efficiently request, transfer, cache, display, store and process geospatial data for a specific resolution and area of interest, providing deterministic performance and scalability for arbitrarily large datasets.
Note 4 to entry: Tiles can contain a variety of data types, such as grid-based pictorial representations (map tiles), coverage subsets (coverage tiles), or feature-based representations (vector tiles).
4.1.7. tile matrix
tiling grid in a given 2D coordinate reference system, associated to a specific scale and partitioning space into regular conterminous tiles, each of which being assigned a unique identifier
Note 1 to entry: From OGC 17-083r4: OGC Two Dimensional Tile Matrix Set.
Note 2 to entry: Each tile of a tile matrix is uniquely identifiable by a row and a column integer indices. The number of rows is referred to as the matrix height, while the maximum number of columns is referred to as the matrix width (the number of columns can vary for different rows in variable width tile matrices).
4.1.8. tile matrix set
tiling scheme consisting of a set of tile matrices defined at different scales covering approximately the same area and having a common coordinate reference system.
Note 1 to entry: From OGC 17-083r4: OGC Two Dimensional Tile Matrix Set.
4.1.9. tile indexing scheme
scheme allowing to uniquely reference a tile in a tiling scheme by the use of a unique identifier (or set of identifiers), and reversely, which unique identifier (or unique set of identifiers) corresponds to a space satisfying the geometric properties of a specific tile
Note 1 to entry: From OGC 17-083r4: OGC Two Dimensional Tile Matrix Set
4.1.10. tile set
a set of tiles resulting from tiling data according to a particular tiling scheme
Note 1 to entry: From OGC 19-014r1: Core Tiling Conceptual and Logical Models for 2D Euclidean Space, but adapted to clarify that in the context of this document, a tile set refers specifically to a set of tiles containing data and following a common tiling scheme.
4.1.11. tiling scheme
scheme that defines how space is partitioned into individual tiles, potentially featuring multiple levels of detail (each tiling at a different granularity to reflect a different resolution or scale)
A tiling scheme defines the spatial reference system and the geometric properties of each tile defined by the scheme. Those properties include which space each tile occupies, i.e. its extent, as well as a tile coordinate origin if a particular corner of origin convention is established.
Note 1 to entry: A tiling scheme can be defined on top of a CRS as well as other spatial reference systems such as DGGS and other organizations including irregular ones. In this document, only tiling schemes based on CRSs are supported.
Note 2 to entry: From OGC 17-083r4: OGC Two Dimensional Tile Matrix Set
4.1.12. tile set metadata
additional metadata beyond the common properties defining the tile set. Such metadata could be an abstract, the owner, the author, or other common metadata. [OGC 19-014r3]
metadata describing common properties defining a tile set, layers and styles used to produce the tile set, the limits of the tile matrix with actual data and common metadata such as abstract, owner, author, etc.
Note 1 to entry: From OGC 17-083r4: OGC Two Dimensional Tile Matrix Set
4.1.13. vector tile
tile that contains vector information that has been generalized (simplified) at the tile scale resolution and clipped by the tile boundaries.
Note 1 to entry: From OGC 17-083r4: OGC Two Dimensional Tile Matrix Set
4.1.14. Web API
API using an architectural style that is founded on the technologies of the Web [source: OGC API — Features — Part 1: Core]
Note 1 to entry: See Best Practice 24: Use Web Standards as the foundation of APIs (W3C Data on the Web Best Practices) for more detail.
5. Conventions
This section provides details of conventions used in this document.
5.1. Identifiers
The normative provisions in this standard are denoted by the URI http://www.opengis.net/spec/ogcapi-tiles-1/1.0 .
All requirements and conformance tests that appear in this document are denoted by partial URIs which are relative to this base.
5.2. Link relations
To express relationships between resources, RFC 8288 (Web Linking) is used.
The following IANA link relation types are used in this document:
alternate: Refers to a substitute for this context.
self: Conveys an identifier for the link’s context.
item: The target IRI points to a resource that is a member of the collection represented by the context IRI.
service-desc: Identifies service description for the context that is primarily intended for consumption by machines. (Web API definitions are considered service descriptions)
service-doc: Identifies service documentation for the context that is primarily intended for human consumption.
The following link relation types specified in the Two Dimensional Tile Matrix Set and Tileset Metadata standard are used:
http://www.opengis.net/def/rel/ogc/1.0/tiling-scheme: The target IRI points to a resource that describes the TileMatrixSet according to the 2D-TMS standard.
http://www.opengis.net/def/rel/ogc/1.0/dataset: The target IRI points to a resource representing the dataset (e.g., the root of an OGC Web API).
http://www.opengis.net/def/rel/ogc/1.0/geodata: The target IRI points to a resource representing a collection of geospatial data.
In addition, the following link relation types are used for which no applicable registered link relation type could be identified:
http://www.opengis.net/def/rel/ogc/1.0/tilesets-vector: The target IRI points to a resource that describes how to provide tile sets of the context resource in vector format.
http://www.opengis.net/def/rel/ogc/1.0/tilesets-map: The target IRI points to a resource that describes how to provide tile sets of the context resource in map format.
http://www.opengis.net/def/rel/ogc/1.0/tilesets-coverage: The target IRI points to a resource that describes how to provide tile sets of the context resource in coverage format.
http://www.opengis.net/def/rel/ogc/1.0/tiling-schemes: The target IRI points to a resource that lists one or more TileMatrixSets according to the 2D-TMS standard.
Used in combination with OGC API — Features — Part 1: Core or OGC API — Common - Part 1: Core, other link relation types will be used, including:
http://www.opengis.net/def/rel/ogc/1.0/conformance: Refers to a resource that identifies the specifications that the link’s context conforms to.
Used in combination with OGC API — Features Part 1: Core or OGC API — Common Part 2: Geospatial data, other link relation types will be used, including:
http://www.opengis.net/def/rel/ogc/1.0/data: Refers to the list of collections available for a dataset.
Each resource representation includes an array of links. Implementations are free to add additional links for all resources provided by the Web API.
6. Overview
6.1. Introduction
The OGC API — Tiles standard defines building blocks which can be used in a Web API to retrieve geospatial data as tiles that follow the structure defined in OGC 17-083r4 2D Tile Matrix Set and Tileset Metadata standard (see Clause 7). The text in this document assumes that the reader is familiar with the concepts in the OGC 17-083r4, such as tile, tile set, tile set metadata, tile matrix and tile matrix set. If that is not the case, reading the overview subsection in the OGC 17-083r4 first is recommended.
Services and clients are encouraged to support as many of the TileMatrixSets defined in the OGC 17-083r4 Annex D and E, as well as others in the OGC TileMatrixSet registry as possible for all geospatial data resources to maximize interoperability. However support for any specific tile matrix set is not required. Tiles that share the same tile matrix set can be easily presented together in a data integration client.
The OGC API — Tiles standard is a successor to the OGC’s previous Web Map Tile Service (WMTS) standard [10]. The essence of the tile matrix set has not changed from the original one used in WMTS, so tiles generated by a WMTS and the ones generated by an implementation of this OGC API that are based on the same tile matrix set can also be easily represented together. If the selected tile matrix set is the one called WebMercatorQuad (see OGC 17-083r4 Annex D.1), tiles are also compatible with the ones made available by some popular mass market approaches (despite concerns repeatedly raised on the accuracy of the CRS used in WebMercatorQuad).
Figure 1 — Contiguous tiles from different services and APIs sharing same WebMercatorQuad tile matrix set and the tile matrix identified as 15 (sometimes called "zoom")
This document does not specify any requirement for the type of geospatial data resource that could be delivered as tiles. Provided that the geospatial data resources can be organized into tiles, they can be supported regardless of whether they are maps, features data, coverages, a resource that does not represent data per se (e.g., an annotation) and so forth.
NOTE The geospatial data resources (e.g., collections) replace the concept of layer in Web Map Service (WMS) [11] and WMTS Standards. The main difference is that layers in WMS and WMTS were not defined by other OGC APIs and did not support other functionalities.
These geospatial data resources can advertise one or more lists of available tilesets (see Clause 8 and Clause 9). This standard also defines how to link to tilesets originating from two specific data resources: OGC API datasets (see Clause 10) and collections (see Clause 11), but other OGC APIs can provide other possibilities. Accessing the geospatial data resource content (other than as tiles) or its descriptions is possible but out of the scope of this standard. If a description of the geospatial data resource is specified by another standard, and this description has a mechanism to add links to other resources, this standard indicates the need to add a link to the list of available tilesets.
The OGC API Tiles API standard does not specify how to get a Web API definition, the conformance class list or the collections lists. However, the standard assumes that the first two are defined by an OGC API standard (e.g., OGC API — Common — Part 1: Core) and the latter by an OGC API for collections (e.g., OGC API — Common — Part 2: Geospatial data). A similar definition is provided directly by OGC API — Features — Part 1: Core.
6.2. Evolution from OGC Web Services
OGC Web Service (OWS) standards have historically implemented a Remote-Procedure-Call-over-HTTP architectural style using Extensible Markup Language (XML) for payloads. This was the state-of-the-art when some of the initial versions of OGC Web Services were originally designed in the late 1990s and early 2000s. This architectural style has now a competing RESTful Web API style that is proposed as an alternative to RPC pattern. A RESTful Web API style is resource-oriented instead of service-oriented. The Web Map Tile Service 1.0 already defines a resource oriented architectural style but it lacks a Web API definition. This OGC API — Tiles standard specifies a Web API that follows the Web architecture and in particular the W3C/OGC Best Practices for sharing Spatial Data on the Web [8] as well as the W3C Best Practices for sharing Data on the Web [9]. The bibliography lists several engineering reports from initiatives that led to the development of OGC API — Tiles. Some of the engineering reports are from OGC Testbed initiatives [1] [16] , whereas others are from the OGC Vector Tiles Pilot [3] [4] [5] [6] [7].
This document provides the necessary elements to incorporate tile support to a Web API implementation. These elements can be incorporated in an API based on the OGC API — Features — Part 1: Core or can be incorporated in a Web API implementation based on the OGC API — Common — Part 1: Core. Both specify a kernel of a Web API approach to services that follows current resource-oriented architecture practices in the OGC. The OGC API — Common standard provides the foundation upon which implementations of the OGC APIs can be built. OGC API — Common can be combined with this standard and other resource-specific OGC API standards to build an OGC API implementation. However, this standard is done in a way that can extend OGC API — Common, but does not make OGC API — Common mandatory. This way, this standard can be reused as a building block in other APIs that does not follow the OGC API pattern.
Beside the general alignment with the architecture of the Web (e.g., consistency with HTTP/HTTPS, hypermedia controls), another goal for OGC API standards is modularization. This goal has several facets:
Clear separation between core requirements and more advanced capabilities. This OGC API — Tiles — Core standard presents the requirements that are relevant for almost everyone who wants to share or use Tiled Data on a fine-grained level. Additional capabilities that several communities are using today will be specified as extensions to the Core API.
Technologies that change more frequently are decoupled and specified in separate modules (“requirements classes” in OGC terminology). This enables, for example, the use/re-use of new encodings for spatial data or Web API definition (such as new version of the OpenAPI description document).
Modularization is not just about a single “service”. OGC APIs will provide building blocks that can be reused in Web APIs in general. In other words, a server supporting the OGC API — Tiles should not be seen as a standalone service. Rather it should be viewed as a collection of Web API building blocks which together implement Tile capabilities. A corollary for this is that it should be possible to implement a Web API that simultaneously conforms to conformance classes from the Features, Coverages, Maps, Tiles, and other future OGC API standards.
This approach intends to support two types of client developers:
Those that have never heard about the OGC. Developers should be able to create a client using the Web API definition without the need to adopt a specific OGC approach (they no longer need to read how to implement a GetCapabilities, allowing them to focus on the geospatial aspects).
Those that want to write a “generic” client that can access OGC APIs. In other words, they are not specific for a particular Web API.
As a result of following a RESTful approach, OGC API implementations are not backwards compatible with OWS implementations per se. However, a design goal is to define OGC APIs in a way that an OGC API interface can be mapped to an OWS implementation (where appropriate). OGC APIs are intended to be simpler and more modern, but still an evolution from the previous versions and their implementations making the transition easy (e.g. by initially implementing facades in front of the current OWS services).
6.3. Relationship to other OGC API standards
The OGC WMS and WMTS share the concept of a map and the capability to create and distribute maps at a limited resolution and size. In WMS, the number of rows and columns that a map should have can be selected by the user within limits, and in WMTS the number of rows and columns of the tile is predefined in the tile matrix.
With time, the concept of a tile, initially used for map tiles has been generalized to other data models such as feature data (some vendors use the expression vector tiles) and even to coverage data or processes that can be parallelized dividing the space in tiles. This standard presents an approach to tiles that can be applied to almost every resource type that returns geospatial data. If applied in conjunction with the OGC API — Features standard and on top of a feature collection, the expected result is tiled feature data. If applied in conjunction with the OGC API — Maps standard and on top of a collection that is transformed into a map by applying a style, the result should be map tiles (usually in PNG or JPEG format).
This standard can be referenced by other standards providing resources that that can be offered as tiles. For example:
OGC API — Maps specifies the link relation types to access map tilesets from a dataset or collection.
OGC API — Styles defines paths to list available styles from which tilesets can also be accessed.
OGC API — Coverages specifies the link relation types and specifics of retrieving coverage tiles.
OGC API — Processes — Part 3: Workflows and Chaining provides a mechanism to trigger localized processing workflows as a result of retrieving tiles (for a specific area and resolution of interest).
This document is the first part of a series of OGC API — Tiles “parts” that use the core and extensions model. It is foreseen that future parts will specify other extensions, such as how to get information of a point in a tile and how to retrieve multiple tiles in a single request. Other standards or extensions of standards may also provide mechanisms (e.g., additional query parameters) to deal with additional dimensions such as elevation, or more advanced temporal capabilities than what is defined in this standard’s datetime conformance class.
6.4. Using this standard independently
Although this standard is designed as a building block that can be leveraged by other standards adding precisions about specific types of data available as tiles (e.g., OGC API — Maps and OGC API — Coverages), the conformance classes defined in this document are still concrete enough to make it possible to distribute and request various types of tiled data, including coverages, vector features and maps, by relying strictly on the content herein and in the 2D Tile Matrix Set and Tileset metadata 2.0 standard.
As informative guidance on how this can be achieved, implementations should consider the following aspects.
6.4.1. Description of the domain
Three different mechanisms are defined by this standard to describe the domain of the tiles, including spatiotemporal axes as well as additional dimensions.
With the Geodata Tilesets List conformance class, the collection description inherited from OGC API — Common — Part 2 contains an extent property that can describe both the spatial and temporal domain of the data. In addition, the Unified Additional Dimensions common building block, used in the example OpenAPI definition, further specifies that additional dimensions shall be described in a similar way to the temporal dimension. An extra grid property in the example OpenAPI definition also allows to specify the resolution and the number of cells (for data organized as a regular grid) or a list of coordinates (for data organized as an irregular grid) along each dimension.
With the TileSet conformance class, the tile set metadata allows to specify a spatial bounding box for tiles as a whole, as well as for each individual collections of geospatial data represented or contained within the tiles (the layers). The resolution of these layers can also be specified by including the minimum and maximum cell size and equivalent scale denominators. The informative Annex J of the 2D Tile Matrix Set and Tileset metadata 2.0 standard further extends this capability to describe the domainset by enhancing the schema to include bounds and resolution for additional dimensions, also able to handle the particularity of unequal temporal units. The annex also includes provisions to describe tile matrix sets featuring additional dimensions which not only extend in other dimensions, but can also define divisions and downsampling of these additional dimensions for lower resolution tile matrices.
In addition to describing the bounds of the tileset dimensions, the TileSet conformance class also allows to specify limits in terms of identifiers for the minimum and maximum tile matrices, tile rows, and tile columns for which data is available.
6.4.2. Description of the observed or measured properties
With the TileSet conformance class, the tile set metadata allows to specify a the measured or observed properties for each collections of geospatial data represented or contained within the tiles (the layers). For each of these properties, a JSON schema and semantic information can be described. This can be used to describe properties for feature collections or the range type of coverages.
6.4.3. Available formats and tile response expectations
This standard defines six conformance classes for specific encodings to encode different types of tiled data. Additional encodings can be supported using HTTP content negotiation, following conventions specific to those encodings while falling back to the closest encoding defined in these conformance classes (e.g., using the GeoTIFF and netCDF conformance class as a model for other coverage data, the JPG and PNG classes for other map tiles encodings, and the Mapbox Vector Tiles or GeoJSON for other vector tiles encodings). The informative Annex J of the 2D Tile Matrix Set and Tileset metadata standard also describes a mechanism that can be used to deliver and access 3D content using this standard, including 3D models either batched as a single mesh, or as points vector tiles referencing shared 3D models.
6.4.4. Limitations
Although this standard can be used by itself, other OGC API standards or draft specifications may provide additional capabilities and specify additional normative requirements describing how to retrieve specific types of tiled content, or allowing to describe in greater detail the domain or the observed or measured properties within the tiled data. Conforming to these standards as well may enable greater interoperability. For example, for map tiles, this standard does not define how a client requests a specific background color or whether tiles should be opaque or transparent.
6.5. How to approach an OGC API
There are at least two ways to approach an OGC API.
Read the landing page, look for links, follow them and discover new links until the desired resource is found
Read a Web API definition document that will specify a list of paths and path templates to resources.
For the first approach, many resources in the Web API include links with rel properties to know the reason and purpose for this relation. The following figure illustrates the resources as ellipses and the links as arrows with the link rel as a label.
Figure 2 — Resources and relations to them via links
For the second approach, implementations should consider the Clause 14 which specifies the use of operationID suffixes, providing a mechanism to associate API paths with the requirements class that they implement.
There is yet a third way to approach an OGC API that relies on assuming a set of predefined paths and path templates. These predefined paths are used in many examples in this document and are presented together in Table 8. It is expected that many implementations of this Standard will provide a Web API definition document (e.g. OpenAPI) using this set of predefined paths and path templates to get necessary resources directly. All this could mislead the reader into getting the false impression that the predefined paths are enforced. Therefore, building a client that is assuming a predefined set of paths is risky. However, it is expected that many API implementations will actually follow the predefined set of paths and the client using this approach could be successful in many occasions. Again, be aware that these paths are not required by this Standard.
Table 8 — Overview of resources and common direct links that can be used to define an OGC API — Tiles implementation
| Resource name | Common path |
|---|---|
| Landing page4 | {datasetRoot}/ |
| Conformance declaration4 | {datasetRoot}/conformance |
| Tiling Schemes6 | {datasetRoot}/tileMatrixSets |
| Tiling Scheme6 (tile matrix set2) | {datasetRoot}/tileMatrixSets/{tileMatrixSetId} |
| Dataset Tiles | |
| Dataset Feature Tiles3 | |
| Dataset tileset list1,2 | {datasetRoot}/tiles |
| Dataset tileset metadata1,2 (in one tile matrix set2) | {datasetRoot}/tiles/{tileMatrixSetId} |
| Dataset feature tile1,3 | {datasetRoot}/tiles/{tileMatrixSetId}/{tileMatrix}/{tileRow}/{tileCol} |
| Dataset Map tiles | |
| Map tileset list2 (geospatial resources1) | {datasetRoot}/map/tiles |
| Map tileset metadata2 (geospatial resources1) | {datasetRoot}/map/tiles/{tileMatrixSetId} |
| Map tile1 | {datasetRoot}/map/tiles/{tileMatrixSetId}/{tileMatrix}/{tileRow}/{tileCol} |
| Geospatial data collections5 | |
| Collections5 | {datasetRoot}/collections |
| Collection5 | {datasetRoot}/collections/{collectionId} |
| Collection Feature Tiles3 | |
| Feature tileset list2 | {datasetRoot}/collections/{collectionId}/tiles |
| Feature tileset metadata2 | {datasetRoot}/collections/{collectionId}/tiles/{tileMatrixSetId} |
| Feature tile3 | {datasetRoot}/collections/{collectionId}/tiles/{tileMatrixSetId}/{tileMatrix}/{tileRow}/{tileCol} |
| Collection Map tiles | |
| Map tileset list2 | {datasetRoot}/collections/{collectionId}/map/tiles |
| Map tileset metadata2 | {datasetRoot}/collections/{collectionId}/map/tiles/{tileMatrixSetId} |
| Map tile | {datasetRoot}/collections/{collectionId}/map/tiles/{tileMatrixSetId}/{tileMatrix}/{tileRow}/{tileCol} |
| Coverage tiles | |
| Coverage tileset list2 | {datasetRoot}/collections/{collectionId}/coverage/tiles |
| Coverage tileset metadata2 | {datasetRoot}/collections/{collectionId}/coverage/tiles/{tileMatrixSetId} |
| Coverage tile | {datasetRoot}/collections/{collectionId}/coverage/tiles/{tileMatrixSetId}/{tileMatrix}/{tileRow}/{tileCol} |
| 1 From the whole dataset or one or more geospatial resources or collections 2 Specified in the Two Dimensional Tile Matrix Set and Tileset Metadata standard 3 Some vendors use the expression vector tiles 4 Specified in the OGC API — Common Part 1: Core standard 5 Specified in the OGC API — Common Part 2: Geospatial data standard 6 Recommended but not required by the core of this standard | |
NOTE 1 Despite the fact that full path and full path templates in the previous table are used in many implementations of the OGC API — Tiles standard, these exact paths are ONLY examples and are NOT required by this standard. Other paths are possible if correctly described in by the Web API definition document and/or the links between resources. However, the TileSets list conformance class does require that paths listing tilesets end with …/tiles. NOTE 2 The use of a {tileMatrixSetId} URI template variable is not required by this Standard. However, the TileMatrixSet definition permission proposes to make all tileset paths homogeneous by using it. A {tileMatrixSetId} template variable must NOT be used in templated links of the tileset metadata as defined in Clause 8. | |
6.6. Why we call them “tiles”
The word tile is traditionally used to refer to a thin, flat or convex slab of hard material such as baked clay or plastic, laid in rows to cover walls, floors, and roofs. In here, we are using the same approach to cover the viewport of a computer screen with tiles representing parts of the world (geospatial features). Actually, some examples of traditional tilesets representing geospatial features can also be found. They are tilesets with only one available tilematrix.
Figure 3 — Tiles in the floor of the monument of discovery in Lisbon, Portugal. (Lee Cannon April 2010, CC-BY-SA, https://www.flickr.com/photos/leecannon/5127274297)
Figure 4 — Tiles in the floor of the terminal 2 of the Prague Airport, Czech Republic. (Joan Masó, September 2022, CC0)
7. Requirement Class “Core”
|
Requirements class 1: Requirements Class Core |
|
|---|---|
| Target type | Web API |
| Dependency | RFC 2616 (HTTP/1.1) |
| Dependency | RFC 2818 (HTTP over TLS) (optional) |
| Dependency | http://www.opengis.net/spec/tms/2.0/req/tilematrixset |
| Label | http://www.opengis.net/spec/ogcapi-tiles-1/1.0/req/core |
The core conformance class is designed as a very generic conformance class that describes a HTTP GET operation, as well as its response, to retrieve tiles from a tileset which can be described by the 2D Tile Matrix Set standard. It introduces the idea of URI templates and variables associated to the TileMatrix, TileRow and TileCol concepts defined in the 2D Tile Matrix Set standard but it does not prescribe a particular path or template form for the URL of those tiles.
This conformance class by itself only concerns the individual tiles and does not describe the tileset as a whole. It is highly recommended that the implementer of a Web API provides tileset metadata in conjunction with the core conformance class as it provides important information to clients. This can be done by also implementing the Clause 8 or integrating within another API providing this capability through another mechanism.
7.1. A tile
A tile resource is a geospatial resource presenting a fragment of a more bigger geospatial data resource that is spatially constrained at the boundaries of the selected tile in a tile matrix set.
7.1.1. Operation
This operation allows retrieving a single tile that represents information coming from geospatial data resources.
Requirement 1 | |
|---|---|
| Label | /req/core/tc-op |
| A | The tiles making up a tileset containing available data SHALL be available as an HTTP GET request to a URI that can be built from a template containing two or three variables. If the tileset is available for more than one tilematrix, the template shall contain three variables (such as {tileMatrix}, {tileRow} and {tileCol} as defined by the tileset conformance class, or {z}, {y} and {x}). If the tileset is available for a single tilematrix, the template shall contain two variables (such as {tileRow} and {tileCol} as defined by the tileset conformance class, or {y} and {x}). The URI is obtained by substituting the variables by their respective valid values. |
| B | These variables SHALL correspond to the tile matrix, tile row and tile column of a particular tile matrix set as defined by the 2D Tile Matrix Set standard. |
| C | The API SHALL provide a mechanism to obtain this template and associate the variables to their respective meaning, for example by implementing the tileset conformance class, or through an API definition. |
NOTE 1 The core conformance class by itself does not prescribe specific names for these variables, nor does it define a specific mechanism to communicate the template.
Typical geospatial data resources that can be retrieved as tiles are: vector features (available at /collections/{collectionId}/items in OGC API — Features — Part 1: Core, for which it is recommended to provide tilesets at /collections/{collectionId}/tiles), maps (specified in OGC — API Maps) or coverages (specified in OGC API — Coverages).
Recommendation 1 | |
|---|---|
| Label | /rec/core/tc-op |
| A | A tiles implementation SHOULD consider to use the tiles URI template variables in the following common order and form: {tileMatrix}/{tileRow}/{tileCol} |
| B | A tiles implementation SHOULD consider to specify the variables {tileMatrix} even if there is only one valid value for them. |
NOTE 2 Clients should not assume the common order of URI template variable and should extract them from the examples in the “links” section or from the API description path templates.
The API implementation can determine the supported encodings, or more precisely the media types of the supported encodings, from the Web API definition, or from the declaration of conformance to the Clause 16. The desired encoding is selected using HTTP content negotiation.
The core of the OGC API — Tiles standard provides a mechanism to select and retrieve a tile in a TileMatrixSet that is agreed between the client and server. This core conformance class does not discuss the details on how the client and service agrees on which TileMatrixSet they use.
7.1.2. Parameter tileMatrix
Requirement 2 | |
|---|---|
| A | If the API implements OGC API — Common — Part 1: Core, the definition of this operation SHALL support a parameter tileMatrix with the following characteristics (shown as OpenAPI Specification 3.0 fragment): name: tileMatrix |
7.1.3. Parameter tileRow
Requirement 3 | |
|---|---|
| A | If the API implements OGC API — Common — Part 1: Core, the definition of this operation SHALL support a parameter tileRow with the following characteristics (shown as OpenAPI Specification 3.0 fragment): name: tileRow |
7.1.4. Parameter tileCol
Requirement 4 | |
|---|---|
| A | If the API implements OGC API — Common — Part 1: Core, the definition of this operation SHALL support a parameter tileCol with the following characteristics (shown as OpenAPI Specification 3.0 fragment): name: tileCol |
7.1.5. Parameter tileMatrixSetId (optional)
Permission 1 | |
|---|---|
| A | An extra {tileMatrixSetId} variable may be used by the API definition for simplification purposes and, this way, make all tileset paths homogeneous. |
| B | The {tileMatrixSetId} variable will be interpreted as one of TileMatrixSet identifiers supported by the resource. In other words, it represents all the TileMatrixSets supported by the resource. |
| C | The following OpenAPI Specification 3.0 fragment) can be used in this case: name: tileMatrixSetId |
7.1.6. Response
A successful response to a tile GET operation will be consistent with the media type of resource requested. This Standard does not impose any media type or file format. Example of common media types are:
For features the media type may be GeoJSON or Mapbox Vector Tiles;
For coverages the response may be GeoTIFF or netCDF;
For maps the response may be a JPEG or a PNG.
Requirement 5 | |
|---|---|
| Label | /req/core/tc-success |
| A | A successful execution of the tile operation with content SHALL be reported as a response with a HTTP status code 200. |
| B | The content of that response SHALL be consistent with the format requested via HTTP content negotiation and represent elements inside or intersecting with the spatial extent of the geographical area of the tile identified by the tile matrix, tile row and tile column of the tileset’s tile matrix set. |
| C | For image tiles, where this behavior is not explicitly overridden by an extension (e.g., a query parameter, or format-specific requirements), the width and height of the image (measured in raster pixels) SHALL be equal to the tileWidth and tileHeight of the corresponding tile matrix. |
| D | For gridded coverage tiles, where this behavior is not explicitly overridden by an extension (e.g., a query parameter, or format-specific requirements), for coverages whose cells span the whole area of the resolution, the width and height of the coverage tile (measured in cells) SHALL be the tileWidth and tileHeight of the corresponding tile matrix; and for coverages whose cells are measurements or observations for a conceptually infinitely small point the width and height of the coverage tile SHALL be tileWidth + 1 and tileHeight + 1. |
Permission 2 | |
|---|---|
| Label | /per/core/tc-core-tile-encoding |
| A | This draft specification does not impose any media type on the encoding of a response containing tiled feature data. For features the media type MAY be GeoJSON, Mapbox vector tiles or other format. |
| B | This draft specification does not impose any media type on the encoding of a response containing tiled coverage data. For coverages it MAY be a GeoTIFF, netCDF or other format. |
| C | This draft specification does not impose any media type on the encoding of a map tile response. For maps it MAY be a JPEG, PNG or other format. |
Normally, the content partially outside the tile bounding box will be clipped at the extent of the bounding box. This can be done efficiently when tiles are in raster format (e.g., map tiles). However, tiles containing features in vector format may not clip features that are partially outside, or clip to a slightly enlarged bounding box (a buffer), to ensure continuity of features or for performance.
Recommendation 2 | |
|---|---|
| Label | /rec/core/tc-success-scale |
| A | The content of that response SHOULD be simplified to comply with the scale denominator represented by the TileMatrix identified. Full resolution geographical elements are only expected for the lower values of scale denominators. |
Recommendation 3 | |
|---|---|
| Label | /rec/core/tc-deepfullempty |
| A | If a requested tile is empty (no data) and all tiles within its extent at all more detailed zoom levels (tile matrices) are guaranteed to also be empty, the response header SHOULD include OATiles-hint: empty. |
| B | If a requested tile is full (e.g., the inside of a polygon for vector features, a solid color for a map, or a grid completely filled with the same value for a coverage) and all tiles within its extent at all more detailed zoom levels (tile matrices) are guaranteed to also be identically full, the response header SHOULD include OATiles-hint: full. |
NOTE A client could use this information to avoid requesting the more detailed tiles of that area.
To enable search engines to easily discover the content offered by an implementation of OGC API — Tiles, as well as to enable web browsers to easily display the content offered by the Web APIs, this standard allows for responses to operations to be encoded in HTML.
Permission 3 | |
|---|---|
| Label | /per/core/tc-core-html |
| A | Every 200-response of an operation of the server MAY support the media type text/html. |
7.1.7. Error conditions
A general summary of the HTTP status codes can be found in OGC API — Features — Part 1: Core, version 1.0 as well as in OGC API — Common.
Requirement 6 | |
|---|---|
| Label | /req/core/tc-error |
| A | If the path parameter values tileMatrix, tileRow, tileCol for a tile request are out-of-range (outside the tile matrix set or tile matrix set limits of the resource), the HTTP response SHALL use a status code 404 or a 400. The response can also contain an exception report. |
| B | If the tile has no content due to lack of data in the area, but is within the data resource’s tile matrix sets and tile matrix sets limits, the HTTP response will use the status code either 204 (indicating an empty tile with no content) or a 200 with the content of a blank response compatible with the requested media type (which may or may not be zero bytes long, depending on the output format). |
7.2. Declaration of conformance classes
To support “generic” clients wishing to access multiple OGC API standards and extensions — and not “just” a specific Web API / server, the Web API has to declare the requirements classes it implements and conforms to.
7.2.1. Response
The conformance page mainly consists of a list of links.
Requirement 7 | |
|---|---|
| Label | /req/core/conformance-success |
| A | If the API instance has a mechanism to advertise conformance classes, the list of conformance classes SHALL include the ones defined in this standard and listed in Table 7 that are supported by this API instance. |
If the server declares also conformity to OGC API — Common or to OGC API — Features — Part 1: Core, version 1.0, then it has to consider the OGC API — Common requirements for declaring conformance, i.e. the use of a the conformance page. In the JSON format the conformance page is an array of links following the link schema defined in the OGC API — Common or in OGC API — Features — Part 1: Core, version 1.0. Below is an example fragment of a conformance information page of a Web API conformant to OGC API — Common and OGC API — Tiles.
Example — Conformance Information Page fragment
{
"conformsTo": [
"http://www.opengis.net/spec/ogcapi-common-1/1.0/conf/core",
"http://www.opengis.net/spec/ogcapi-tiles-1/1.0/conf/core"
]
}
8. Requirement Class “TileSet”
8.1. Overview
Requirements class 2: Requirements Class Tileset | |
|---|---|
| Target type | Web API |
| Dependency | RFC 8288 (Web Linking) |
| Dependency | http://www.opengis.net/spec/tms/2.0/req/json-tilesetmetadata |
| Dependency | http://www.opengis.net/spec/ogcapi-tiles-1/1.0/req/core |
| Label | http://www.opengis.net/spec/ogcapi-tiles-1/1.0/req/tileset |
The tileset conformance class provides a mechanism to retrieve metadata for a set of tiles of geospatial data tiled according to one specific TileMatrixSet. It also provides a mechanism to obtain a templated link to retrieve individual tiles as defined in the core conformance class.
It describes the HTTP GET operation on a tileset resource and its response, but does not prescribe an specific path. The response provides metadata as per the 2D Tile Matrix Set and TileSet Metadata standard.
The essential elements of this metadata are:
a link to the definition of the TileMatrixSet (either one registered in the OGC TileMatrixSet registry, or to a custom TileMatrixSet definition),
a TileMatrixSet URI in the case of a TileMatrixSet registered with an authority (e.g. the OGC NA TileMatrixSet registry),
a Coordinate Reference System (e.g. provided as a URI),
a templated link (URI) to individual tiles,
and a data type (indicating whether the tileset consists of vector, coverage or map tiles).
It may optionally also provide additional information, such as:
a title,
a description,
the limits of the tileset if it does not span the full extent of the TileMatrixSet,
the geospatial data resources involved in the creation of the tiles (potentially including links to OGC API collections),
a schema of the available properties contained within the tiles,
styles used to create the tiles,
a central point on which a viewer may initially focus,
attribution.
A link to a definition of a TileMatrixSet is always required whether a custom TileMatrixSet or a registered TileMatrixSet is used. It is recommended that the Web API hosts a local definition of each supported TileMatrixSet to ensure availability.
8.2. Tileset resource
A tileset consists of a set of tiles obtained by partitioning geospatial data according to a particular TileMatrixSet. The tileset metadata contains all the information necessary for a client application to request tiles from the tileset.
8.2.1. Tileset path
This class does not specify a full path to a tileset. Generally, tileset resources are linked from a tilesets list resource (refer to the Clause 9 for how to list available tilesets and link to individual tileset resources). Refer to the Clause 10 and Clause 11 describing two mechanisms to associate lists of tilesets to an OGC API dataset (landing page) and to geospatial data (collection) resources respectively. It is expected that a tileset can be used as a building block in other Web APIs and can be used to provide tiles of different types of data such as maps, features, coverages or other types of geospatial data that can benefit from tiling.
8.2.2. Response
A successful GET response to a tileset resource will be metadata consisting of a data structure with the specific information necessary to build a complete GET request of the tiles representing the geospatial data resource.
Requirement 8 | |
|---|---|
| Label | /req/tileset/description |
| A | The tileset endpoint SHALL support negotiating an application/json response. In this case, a successful response of a HTTP GET for a specific tileset SHALL be encoded following the data model and JSON schema for tileset metadata, as defined by the 2D Tile Matrix Set and Tileset Metadata standard 2.0. |
| B | If the tileset endpoint also support negotiating an application/xml response, a successful response of a HTTP GET for a specific tileset SHALL be encoded following the data model and XML schema for tileset metadata, as defined by the 2D Tile Matrix Set and Tileset Metadata standard 2.0. |
| C | If the tileset uses a TileMatrixSet registered in a TileMatrixSet registry (e.g. OGC NA), the tileMatrixSetURI property SHALL link to the registered TileMatrixSet (e.g. http://www.opengis.net/def/tilematrixset/{tileMatrixSet}). |
| D | The links property SHALL include a link to the TileMatrixSet definition with relation type http://www.opengis.net/def/rel/ogc/1.0/tiling-scheme following the tile matrix set schema, as defined by the 2D Tile Matrix Set and Tileset Metadata standard 2.0. |
| E | The tileset metadata SHALL include at least one templated link to individual tiles using the relation type item, and the template parameters {tileMatrix}, and {tileRow} and {tileCol}. Those variables are to be substituted by their respective valid values to obtain the URL to a tile. |
| F | If a tiles link template is specific to a particular format, it SHALL contain the media type for that format in the “type” property. Otherwise, normal HTTP content type negotiation rules apply (Accept: header). |
| G | A property templated with a boolean true value SHALL be part of the link properties to indicate that the link needs to be processed to substitute the templated variables with valid values before being used as a URL to a tile. |
In addition to the recommendation to include links in the HTTP response headers as specified in OGC API — Common — Part 1, this standard recommends following the Link-Template HTTP Header Field draft specification, to include Link-Template for templated links, such as the URI for individual tiles.
Recommendation 4 | |
|---|---|
| Label | /rec/tileset/header-linktemplates |
| A | The tileset metadata response SHOULD include a Link-Template: in the header following the Link-Template HTTP Header Field draft specification, for example, Link-Template: </ogcapi/collections/blueMarble/map/tiles/GNOSISGlobalGrid/{tileMatrix}/{tileRow}/{tileCol}.png>; rel=”item”; type=”image/png”; var-base=”/ogcapi/vars/” . |
| B | The templated link in the tilesetmetadata SHOULD include a varBase, if the implementation additionally supports providing semantic information about the parameters. |
See the Clause 15 for providing an XML representation of the tileset metadata.
Support for alternative encodings for tileset metadata can be added, such as TileJSON.
Currently, use of the TileJSON specification usually implies a WebMercatorQuad TileMatrixSet and the reference to it is implicit. TileJSON version 3 provides an additional mechanism to cite data sources.
Recommendation 5 | |
|---|---|
| Label | /rec/tileset/tmxslink |
| A | To improve interoperability, this standard recommends that the API provides tiles following the TileMatrixSets defined in a TileMatrixSet registry. |
| B | It is also possible to use a TileMatrixSet not available in a registry. In this case the API SHOULD provide a definition of the TileMatrixSet as resolvable URI in an endpoint following the template: /tileMatrixSets/{tileMatrixSetId} (where {tileMatrixSetId} is a unique identifier of the TileMatrixSet in the service) following the TileMatrixSet schema in http://docs.ogc.org/is/17-083r4/17-083r4 |
| C | When the API provides one or more definitions of TileMatrixSets as resolvable URI in /tileMatrixSets/{tileMatrixSetId}, the /tileMatrixSets endpoint SHOULD respond with the list of TileMatrixSets defined by the API using an object with a tileMatrixSets property that contains an array of TileMatrixSet objects. |
| D | When the API provides a /tileMatrixSets endpoint, this endpoint SHOULD be mentioned in one or more links in the landing page of the API with the rel type http://www.opengis.net/def/rel/ogc/1.0/tiling-schemes. |
NOTE 1 The common TileMatrixSets defined in Annex D of OGC 17-083r4 and the variable-width TileMatrixSets defined in Annex E of OGC 17-083r4 are registered in the OGC TileMatrixSets registry available at http://www.opengis.net/def/tms.
Recommendation 6 | |
|---|---|
| Label | /rec/tileset/bbox |
| A | The tileset metadata SHOULD populate the bounding box element to describe the tileset extent. |
Recommendation 7 | |
|---|---|
| Label | /rec/tileset/conf-link |
| A | Include a link with ‘rel’ type ‘conformance’ to link to the conformance page |
Clients or servers are not required to support a specific default TileMatrixSet.
NOTE 2 The OGC TileMatrixSets registry is based on the OGC Two Dimensional Tile Matrix Set standard. Refer to Annex D and E for commonly used TileMatrixSets
NOTE 3 When this conformance class is used together with the GeoData Tilesets conformance class, the geospatial data resource URL is typically the first part of the URL template, but this standard does not mandate this (e.g., the tileset metadata and tiles could be hosted on more affordable object storage).
Example 1 — Example fragment of a tileset response for a common TileMatrixSet defined in the OGC NA registry
{
...
"tileMatrixSetURI": "http://www.opengis.net/def/tilematrixset/OGC/1.0/WorldMercatorWGS84Quad",
"dataType": "map",
"crs": "http://www.opengis.net/def/crs/EPSG/0/3395",
"links": [
...
{
"href": "http://data.example.com/collections/buildings/tiles/WorldMercatorWGS84Quad",
"rel": "self",
"type": "application/json",
"title": "Buildings tileset tiled using World Mercator TileMatrixSet"
},
{
"href": "http://schemas.opengis.net/tms/2.0/json/examples/WorldMercatorWGS84Quad.json",
"rel": "http://www.opengis.net/def/rel/ogc/1.0/tiling-scheme",
"type": "application/json",
"title": "Definition of WorldMercatorQuad TileMatrixSet"
},
{
"href": "http://data.example.com/collections/buildings/tiles/WorldMercatorWGS84Quad/{tileMatrix}/{tileRow}/{tileCol}.png",
"templated": true,
"rel": "item",
"type": "image/png",
"title": "Templated link for retrieving PNG tiles"
}
...
],
"tileMatrixSetLimits":
[
{ "tileMatrix" : "0", "minTileRow" : 0, "maxTileRow" : 0, "minTileCol" : 0, "maxTileCol" : 0 },
{ "tileMatrix" : "1", "minTileRow" : 0, "maxTileRow" : 0, "minTileCol" : 1, "maxTileCol" : 1 },
{ "tileMatrix" : "2", "minTileRow" : 1, "maxTileRow" : 1, "minTileCol" : 2, "maxTileCol" : 2 },
{ "tileMatrix" : "3", "minTileRow" : 3, "maxTileRow" : 3, "minTileCol" : 4, "maxTileCol" : 4 },
...
]
}
NOTE 4 The use of “templated” is inspired by the JSON Hypertext Application Language (HAL), https://tools.ietf.org/html/draft-kelly-json-hal-08
The following table explains the meaning of the URI template variables.
Table 9 — URI template variables for tiles and valid values
| URL template variable | Meaning | Possible values |
|---|---|---|
| TileMatrix | tile matrix identifier | Identifier of the tile matrix (representing a zoom level, a.k.a. a scale) listed in the TileMatrixSet definition |
| TileRow | row index of tile matrix | A non-negative integer between 0 and the MatrixHeight — 1. If there is a TileMatrixSetLimits the value is limited between MinTileRow and MaxTileRow |
| TileCol | column index of tile matrix | A non-negative integer between 0 and the MatrixWidth — 1. If there is a TileMatrixSetLimits the value is limited between MinTileCol and MaxTileCol |
Example 2 — Example fragment of a tileset response for a Web API-defined TileMatrixSet
{
...
"dataType": "map",
"crs": "http://www.opengis.net/def/crs/EPSG/0/2001",
"links": [
...
{
"href": "http://data.example.com/collections/buildings/tiles/CustomAntiguaTMS",
"rel": "self",
"type": "application/json",
"title": "Buildings tileset tiled using custom Antigua TileMatrixSet"
},
{
"href": "http://data.example.com/collections/buildings/tiles/CustomAntiguaTMS/{tileMatrix}/{tileRow}/{tileCol}.png",
"templated": true,
"rel": "item",
"type": "image/png",
"title": "Templated link for retrieving PNG tiles"
},
{
"href": "http://data.example.com/tileMatrixSets/CustomAntiguaTMS",
"rel": "http://www.opengis.net/def/rel/ogc/1.0/tiling-scheme",
"type": "application/json",
"title": "Definition of custom Antigua TileMatrixSet"
}
...
],
"tileMatrixSetLimits":
[
...
]
}
8.3. Web API-defined TileMatrixSets
This section provides more details on the recommendations for Web API-defined TileMatrixSets. In the future, an extension of this standard could describe a mechanism to manage (create, update…) tiling schemes for a Web API and make some of the recommendations expressed here mandatory.
8.3.1. Web API landing page
The landing page provides links to start exploring the resources offered by the Web API. It mainly consists in a list of links. New links for TileMatrixSets on top of the common ones are introduced.
In the landing page, in JSON format, the links follow the link schema defined in the OGC API — Common. The following is an example fragment of the response to an OGC API — Tiles landing page.
Example — Web API Landing Page fragment with links to TileMatrixSet descriptions
{
"links": [
...
{
"href": "http://data.example.org/tileMatrixSets?f=json",
"rel": "http://www.opengis.net/def/rel/ogc/1.0/tiling-schemes",
"type": "application/json",
"title": "List of tileMatrixSets implemented by this API in JSON"
},
{
"href": "http://data.example.org/tileMatrixSets?f=html",
"rel": "http://www.opengis.net/def/rel/ogc/1.0/tiling-schemes",
"type": "text/html",
"title": "List of tileMatrixSets implemented by this API in HTML"
}
]
}
8.3.2. TileMatrixSets
The TileMatrixSets endpoint retrieves links to the descriptions of the tile matrix sets supported by the Web API in addition to the TileMatrixSets defined in the Annex D and the Annex E of the OGC 17-083r4 standard. The response follows the schema below.
Example 1 — Schema for the TileMatrixSets resource
type: object
required:
- tileMatrixSets
properties:
tileMatrixSets:
type: array
items:
$ref: '#/components/schemas/id-link'
Example 2 — Schema for id-link from OGC API — Common used in TileMatrixSets resource.
id-link:
type: object
description: |-
Reusable object that contains an id to a resource and links where the object is described or a representation retrieved. Typically it is useful for paths like `/resources` and `/resources/{resourceId}`. `/resources` will respond an array of id-link listing the `resourceId` and the links to get it. /collections and /collections/{collectionId} is an exception to this pattern.
The fact that `links` is an array can be used to advertise the same object representation in different formats.
required:
- id
- links
properties:
id:
type: string
tileMatrixSetURI:
type: string
format: uri
description: If the Tile Matrix Set is registered in the Definitions Server, this property should the reference to this definition
title:
type: string
links:
type: array
minItems: 1
items:
$ref: '#/components/schemas/link'
Example 3 — Example for the TileMatrixSets resource
{
"tileMatrixSets": [
{
"id": "MyWebMercatorQuad",
"uri": "http://www.opengis.net/def/tilematrixset/OGC/1.0/WebMercatorQuad"
"title": "My Google Maps Compatible for the World",
"links": [
{
"rel": "self",
"href": "https://data.example.org/tileMatrixSets/MyWebMercatorQuad",
"type": "application/json",
"title": "Local definition of WebMercatorQuad TileMatrixSet"
}
]
}
]
}
8.3.3. TileMatrixSet
The TileMatrixSet endpoint retrieves the full description of a tile matrix set supported by the Web API following the schema described in the OGC 17-083r4 standard. The response follows the TileMatrixSet schema.
Example — Fragment of a TileMatrixSet resource example
{
"title": "My TileMatrixSet for the World",
"id": "MyTMS",
"uri": "http://www.opengis.net/def/tilematrixset/OGC/1.0/WebMercatorQuad",
"crs": "http://www.opengis.net/def/crs/EPSG/0/3857",
"wellKnownScaleSet": "http://www.opengis.net/def/wkss/OGC/1.0/GoogleMapsCompatible",
"tileMatrices": [
...
{
"title": "My zoom level 3",
"id": "3",
"scaleDenominator": 69885283.0035897,
"cellSize": 19567.8792410051,
"pointOfOrigin": [-20037508.3427892,20037508.3427892],
"tileWidth": 256,
"tileHeight": 256,
"matrixWidth": 8,
"matrixHeight": 8
}
...
]
}
9. Requirement Class “TileSets List”
9.1. Overview
Requirements class 3: Requirements Class Tilesets List | |
|---|---|
| Target type | Web API |
| Dependency | http://www.opengis.net/spec/ogcapi-tiles-1/1.0/req/tileset |
| Label | http://www.opengis.net/spec/ogcapi-tiles-1/1.0/req/tilesets-list |
This class defines a resource called tilesets list that provides a list of available tilesets for a resource. It also defines a how to link to individual tileset resources, which are defined in the Clause 8. Refer to the Clause 10 and Clause 11 classes that describes two complementary mechanisms to associate tilesets to datasets and to geospatial data resources, respectively.
9.2. Tilesets list
A tilesets list resource represents a list of sets of tiles, each one belonging to a particular TileMatrixSet. Each tileset resource returns the necessary metadata to enable a client application to formulate a tile request.
9.2.1. Tilesets path
This class does not specify the full path to a tileset list but requires that it ends with /tiles.
Requirement 9 | |
|---|---|
| Label | /req/tilesets-list/tileset-path |
| A | The API SHALL support a GET operation on a …/tiles path returning a list of available tilesets |
9.2.2. Response
A successful GET response to a list of tilesets resource will respond with a data structure that lists the tileset URLs available (one for each Tile Matrix Set supported).
Requirement 10 | |
|---|---|
| Label | /req/tilesets-list/tileset-links |
| A | A successful response of a HTTP GET SHALL consist of a list of available tilesets each element containing a subset of the tileset metadata (as defined by the 2D Tile Matrix Set and Metadata standard), consisting of: dataType, crs, a link to the tileset (with rel: self), a link to the tileMatrixSet defintion (with rel: http://www.opengis.net/def/rel/ogc/1.0/tiling-scheme) and tileMatrixSetURI (if the TMS is available in a registry). |
| B | Each element of that list SHALL include a link to a resource providing the full version of the tileset metadata, using link relation self. |
| C | The tileset-list endpoint SHALL support negotiating an application/json response. In this case, each tileset in the successful response of a HTTP GET SHALL be encoded following the data model and JSON schema for tileset metadata, as defined by the 2D Tile Matrix Set and Tileset Metadata standard 2.0. |
| D | If the tileset-list endpoint also supports negotiating an application/xml response, each tileset in the successful response of a HTTP GET SHALL be encoded following the data model and XML schema for tileset metadata, as defined by the 2D Tile Matrix Set and Tileset Metadata standard 2.0. |
Example — Example of a tilesets list response
{
"tilesets": [
...
{
"title" : "Buildings (WebMercatorQuad)",
"tileMatrixSetURI" : "http://www.opengis.net/def/tilematrixset/OGC/1.0/WebMercatorQuad",
"crs" : "http://www.opengis.net/def/crs/EPSG/0/3857",
"dataType" : "vector",
"links" : [
{
"rel": "self",
"href": "http://data.example.com/collections/buildings/tiles/WebMercatorQuad",
"type": "application/json"
},
{
"rel": "http://www.opengis.net/def/rel/ogc/1.0/tiling-scheme",
"href": "http://data.example.com/tileMatrixSets/WebMercatorQuad",
"type": "application/json"
}
]
}
...
]
}
Recommendation 8 | |
|---|---|
| Label | /rec/tilesets-list/tileset_title |
| A | The tilesets array metadata (as defined by the 2D Tile Matrix Set and Metadata standard) subset SHOULD include a short human readable title |
Permission 4 | |
|---|---|
| Label | /per/tilesets-list/tilesets-api |
| A | An API document can advertise a single resource path (expressed as a URI template) to get multiple tilesets. |
| B | This URI template will use the {tileMatrixSetId} variable. The {tileMatrixSetId} variable will be interpreted as one of TileMatrixSet identifiers supported by the resource. In other words, it represents all the TileMatrixSets supported by the resource. Note that a {tileMatrixSetId} variable must NOT be used in the templated links of the tileset metadata. |
10. Requirement Class “Dataset Tile Sets”
10.1. Overview
Requirements class 4: Requirements Class Dataset Tilesets | |
|---|---|
| Target type | Web API |
| Dependency | http://www.opengis.net/spec/ogcapi-tiles-1/1.0/req/tilesets-list |
| Label | http://www.opengis.net/spec/ogcapi-tiles-1/1.0/req/dataset-tilesets |
This conformance class defines a mechanism to retrieve a list of tilesets for a dataset (a.k.a., a root resource) which may contain multiple geospatial data resources. It is used in conjunction with Clause 9 that specifies the response to this GET request.
Combined with the Clause 12 conformance class, it is also possible to select specific geospatial data resources (collections) to be combined and retrieved as tiles. For retrieving the list of tilesets for only one collection, the Clause 11 can also be used if it is implemented.
If a Web API offers several geospatial data resources for a dataset, it may limit the number of collections that can be retrieved together, and/or provide a limited subset of the collections by default.
10.2. General
Recommendation 9 | |
|---|---|
| Label | /rec/dataset-tilesets/api-common |
| A | An implementation of this standard SHOULD consider to implement the requirements specified in the http://www.opengis.net/spec/ogcapi-common-1/1.0/req/core Requirements Class of OGC API — Common — Part 1: Core version 1.0.0. |
This building block stays flexible and does not require implementation of OGC API — Common — Part 1, allowing for other Web API architectures outside the OGC API framework to adopt it. However, a server implementing other OGC APIs is expected to implement OGC API — Common — Part 1. In practice, this means that the landing page and the conformance page follow OGC API — Common — Part 1 requirement classes when used. It is also possible to combine this building block with OGC API — Features — Part 1: Core, version 1.0.
10.3. Web API landing page
The landing page provides links to start exploring the resources offered by the Web API. It mainly consists of a list of links to root resources. This conformance class requires including in the landing page one or more link(s) to list(s) of tilesets available for the dataset.
10.3.1. Response
Requirement 11 | |
|---|---|
| Label | /req/dataset-tilesets/landingpage |
| A | If the API has a mechanism for exposing root resources (e.g., a landing page), the API SHALL advertise at least one URIs to retrieve tilesets list provided by this service with a link having a rel value: http://www.opengis.net/def/rel/ogc/1.0/tilesets-vector, http://www.opengis.net/def/rel/ogc/1.0/tilesets-map or http://www.opengis.net/def/rel/ogc/1.0/tilesets-coverage. |
In the landing page, in JSON format, the links follow the link schema defined in the OGC API — Common — Part 1: Core or in OGC API — Features — Part 1: Core 1.0. Below you can find an example fragment of the response to an OGC API — Tiles landing page showing links to dataset tilesets.
Example — Web API Landing Page fragment that advertises dataset tilesets
{
"links": [
...
{
"href": "http://data.example.org/tiles",
"rel": "http://www.opengis.net/def/rel/ogc/1.0/tilesets-vector",
"type": "application/json",
"title": "List of available vector features tilesets for the dataset"
},
{
"href": "http://data.example.org/tiles",
"rel": "http://www.opengis.net/def/rel/ogc/1.0/tilesets-map",
"type": "application/json",
"title": "List of available map tilesets for the dataset"
}
]
}
Recommendation 10 | |
|---|---|
| Label | /rec/dataset-tilesets/landingpage |
| A | The URI to the dataset tilesets will be /tiles. |
10.4. Dataset tilesets
The dataset tilesets operation provides essential tileset metadata and links to tilesets resources allowing to request tiles from the dataset.
10.4.1. Operation
Requirement 12 | |
|---|---|
| Label | /req/dataset-tilesets/operation |
| A | The dataset resource (the root resource) SHALL have at least one tileset accessible at …/tiles supporting an HTTP GET operation. |
| B | The URI SHALL be composed of two parts: the initial part is the URI of the dataset resource (the root resource) that can be represented as tiles and the final part follows the pattern /tiles. |
The request of this operation has no parameters.
10.5. Tiles
The Clause 7 defines how to retrieve a single tile from a tileset available for the dataset.
10.5.1. Response
The response is expected to represent the dataset as a whole. In a Web API providing access to a complex dataset formed by several geospatial data resources, it can be useful to select specific sub-resources of interest when requesting data from this dataset. This can be achieved with the use of the Clause 12 or as an automatic decision by the server.
Recommendation 11 | |
|---|---|
| Label | /rec/dataset-tilesets/geodata-selection |
| A | When it is possible and sensible, all geospatial data resources (/collections) SHOULD be represented in the tiles. |
Permission 5 | |
|---|---|
| Label | /per/dataset-tilesets/geodata-selection |
| A | If it is not possible and sensible to represent all geospatial data resources (/collections) in tiles (e.g., it compromises performance or tiles are overcrowded with too many elements), the server MAY select only the most significant geospatial data resources. |
11. Requirement Class “Geo Data Resource TileSets”
11.1. Overview
Requirements class 5: Requirements Class Geodata Tilesets | |
|---|---|
| Target type | Web API |
| Dependency | http://www.opengis.net/spec/ogcapi-tiles-1/1.0/req/tilesets-list |
| Label | http://www.opengis.net/spec/ogcapi-tiles-1/1.0/req/geodata-tilesets |
This conformance class assumes that data is organized into one or more geospatial data resources (e.g., the “collections” OGC API — Common — Part 2: Geospatial data). Geospatial data resources are referenced using URIs.
It defines how to specify link(s) to one or more list(s) of tilesets containing a representation of this geospatial data resource (path). It is used in conjunction with Clause 9 that specifies the response to this GET request.
11.2. General
Recommendation 12 | |
|---|---|
| Label | /rec/geodata-tilesets/api-common |
| A | An implementation of this standard SHOULD consider to implement the requirements specified in the http://www.opengis.net/spec/ogcapi-common-1/1.0/req/core and http://www.opengis.net/spec/ogcapi-common-2/1.0/req/collections Requirements Classes of the OGC API — Common — Part 1 and 2 version 1.0 standards. |
This building block depends on OGC API — Part 2: Geospatial data, but stays flexible and does not require implementation of OGC API — Common — Part 1, allowing for other Web API architectures outside the OGC API framework to adopt it. However, a server implementing other OGC APIs is expected to implement OGC API — Common — Part 1. In practice, this means that the landing page and the conformance page follow OGC API — Common core requirement classes when used. It is also possible to combine this building block with OGC API — Features — Part 1: Core, version 1.0 instead of _OGC API — Common — Part 2.
11.3. Geospatial data resources
This standard does not specify how geospatial data resources are exposed in the Web API and if they can be retrieved as geospatial data (e.g., feature items). For example, OGC API — Features — Part 1: Core, version 1.0 includes the definition of collections and each collection is available in the /collections/{collectionId} path. OGC API — Common will provide a similar mechanism. Other paths in the Web API could also give access to geospatial data resources.
NOTE The concept of geospatial data resource path replaces the concept of “layer” found in WMTS 1.0, but is intended to result in a better integration between data visualization and data access.
Requirement 13 | |
|---|---|
| Label | /req/geodata-tilesets/desc-links |
| A | If the API has a mechanism for their geospatial data resources to expose links to geospatial aspects (e.g., feature items, metadata…), the API SHALL include at least one of three link with the href pointing to tilesets list for geospatial data resources and with rel: http://www.opengis.net/def/rel/ogc/1.0/tilesets-vector, http://www.opengis.net/def/rel/ogc/1.0/tilesets-map and http://www.opengis.net/def/rel/ogc/1.0/tilesets-coverage. |
For example, an implementation of the OGC API — Features — Part 1: Core returns a list of links that include geospatial aspects for each geospatial data resource in the /collections/{collectionId} path. OGC API — Common — Part 2: Geospatial data provides a similar mechanism. In the JSON response, the links array is where links to lists of tilesets must be added.
Example — Fragment of a collection with a links array including two items pointing to lists of tilesets (one for vector tiles and one for map tiles)
[
...
{
"id": "buildings",
"title": "Buildings in the city of Bonn",
"description": "This collection contains buildings",
"attribution": "OpenStreetMap",
"extent": {
...
}
"links": [
...
{
"href": "http://data.example.com/collections/buildings/tiles",
"rel": "http://www.opengis.net/def/rel/ogc/1.0/tilesets-vector",
"type": "application/json",
"title": "List of available vector tilesets for the collection of Bonn buildings"
},
{
"href": "http://data.example.com/collections/buildings/tiles",
"rel": "http://www.opengis.net/def/rel/ogc/1.0/tilesets-map",
"type": "application/json",
"title": "List of available map tilesets for the collection of Bonn buildings"
}
]
}
...
]
Recommendation 13 | |
|---|---|
| Label | /rec/geodata-tilesets/desc-links |
| A | The URI SHOULD consist of the path of the geospatial data resources followed by /tiles. |
11.4. Geospatial data resources tilesets list
The geospatial data resource tilesets operation provides essential tileset metadata and links to tilesets resources allowing to request tiles from the resource.
11.4.1. Operation
Requirement 14 | |
|---|---|
| Label | /req/geodata-tilesets/operation |
| A | The geospatial data resource SHALL have an associated list of at least one tileset accessible at …/tiles supporting an HTTP GET operation. |
| B | The URI SHALL be composed of two parts: the initial part is the URI of the geospatial data resource that can be represented as tiles and the final part follows the pattern /tiles. |
This standard does not specify the need for any additional query parameter in the GET request.
11.5. Tiles
A tile resource is a fragment of a larger single geospatial data resource that is spatially constrained at the boundaries of the selected tile in a tile matrix set. Details of the operation are described in the Clause 7.
12. Requirement Class “Collections Selection”
12.1. Overview
Requirements class 6: Requirements Class Collections Selection | |
|---|---|
| Target type | Web API |
| Dependency | http://www.opengis.net/spec/ogcapi-common-2/1.0/req/collections |
| Label | http://www.opengis.net/spec/ogcapi-tiles-1/1.0/req/collections-selection |
In a Web API providing access to a complex dataset formed by several geospatial data resources, it can be useful to select specific sub-resources of interest when requesting data from this dataset. This requirements class defines how to include a query parameter when requesting a resource (e.g., dataset tiles) to specify which geospatial data resources (a.k.a. collections) should be used to generate the response.
This conformance class can be used e.g. in conjunction with the Clause 10 conformance class or in conjunction with an equivalent conformance class in OGC API — Maps.
12.2. Operation
By default, the geospatial data resources to be included in the dataset tiles responses are unspecified but should represent the dataset as a whole. This class adds a mechanism to select the geospatial data resources to be used to generate the derived resources (e.g., maps or tiles). In practice this enables the capability to generate resources involving more than one geospatial data sub-resource.
12.2.1. Parameter collections
Requirement 15 | |
|---|---|
| A | An operation that acts on a resource consisting of multiple geospatial data sub-resources (e.g., a resource derived from a root dataset) SHALL support an optional parameter collections with the following characteristics (shown as OpenAPI Specification 3.0 fragment) name: collections |
| B | The parameter collections SHALL be supported by tileset resources and tiles resources for origins consisting of multiple geospatial data sub-resources (e.g. dataset tileset at {datasetAPI}/tiles/WebMercatorQuad and dataset tiles at {datasetAPI}/tiles/WebMercatorQuad/{tileMatrix}/{tileRow}/{tileCol}). |
| C | Implementations SHALL support a comma-separated list of either geospatial resource identifiers (e.g., collectionId’s) and/or full URLs to geospatial resource identifiers. |
When this parameter refers to more than one geospatial data resource, this parameter will use the comma (“,”) as the separator between the resource identifiers in the list. Additional white space will not be used to delimit list items. If a geospatial data resource identifier includes a space or comma, it shall be escaped using the URL encoding rules (IETF RFC 2396).
Permission 6 | |
|---|---|
| Label | /per/collections-selection/valid-collections |
| A | An implementation MAY return an error when the specified list of collections is not supported, for reasons such as an incompatible combination, or an unsupported encoding or TileMatrixSet for some of the selected collections. |
12.2.2. Response
Requirement 16 | |
|---|---|
| Label | /req/collections-selection/collections-response |
| A | Only the collections of geospatial data enumerated in the values of the collections parameter SHALL be used to generate the responses for the resources (tiles and tilesets) to which they apply. |
| B | If there is more than one collection name and the style applied does not specify otherwise, the comma-separated collections SHALL be included in the result starting by the first (leftmost) and ending by the last (rightmost). |
NOTE In map tiles, sub-requirement B will result in the first collection being portrayed in the bottom with the others rendered on top of the previous ones, one by one (the rightmost collection will become topmost in the portrayal).
12.2.3. Error conditions
If the value of the parameter collections contains a resource id of URI that does not exist on the Web API, the status code of the response is 400.
If the value of the parameter collections has a wrong format or combines one of more geospatial data resources that are not compatible (e.g., they do not have a compatible value specified by other parameters in the request), the status code of the response is 400.
13. Requirement Class “DateTime”
13.1. Overview
Requirements class 7: Requirements Class Datetime | |
|---|---|
| Target type | Web API |
| Dependency | http://www.opengis.net/spec/ogcapi-tiles-1/1.0/req/core |
| Label | http://www.opengis.net/spec/ogcapi-tiles-1/1.0/req/datetime |
This conformance class defines the way date and time can be used as a parameter to filter the content in the tile resource. This conformance class is importing most of the functionality from OGC API — Commons.
13.2. Describing the temporal extent
Depending on the type of resource, the way the temporal extent and the resolution of the datetime values available for the client to request are described may be different:
For Geodata Tilesets, the collection description should specify the temporal extent of the resources. Tiles can be requested inside this extent. If the extent is specified in a way that instant values are provided (e.g. by listing them or by including a resolution) then it be possible to request tiles for these instants.
If a tileset metadata is available, a future revision of 2D tile matrix set standard could take precedence providing more details on the available values for datetime.
13.3. datetime query parameter request and response
This section is based on the OGC API common datetime module that is entirely reproduced here.
| Requirements Module | |
| http://www.opengis.net/spec/ogcapi-common-2/1.0/rm/datetime | |
| Target type | Web API Query Parameter |
The datetime parameter selects resources based on their temporal extent. The definition of temporal extent is specific to the resource type being filtered.
The datetime parameter is defined as follows:
Requirement 17 | |
|---|---|
| A | The datetime parameter SHALL have the following characteristics (using an OpenAPI Specification 3.0 fragment): name: datetime |
| B | Temporal geometries are either a date-time value or a time interval. The parameter value SHALL conform to the following syntax (using ABNF): interval-closed = date-time "/" date-time |
| C | The syntax of date-time is specified by RFC 3339, 5.6. |
| D | Open ranges in time intervals at the start or end are supported using a double-dot (..) or an empty string for the start/end. |
While the processing of the datetime parameter is specific to the resource and operation for which it is applied, there is a general set of requirements which all implementations must address.
Requirement 18 | |
|---|---|
| Label | /req/collections/rc-datetime-response |
For each UML class defined or referenced in the Relief Package: | |
| A | If the datetime parameter is provided by the client and supported by the server, then only resources that have a temporal geometry that intersects the temporal information in the datetime parameter SHALL be part of the result set. If a resource has multiple temporal properties, it is the decision of the server whether only a single temporal property is used to determine the extent or all relevant temporal properties. |
| B | The datetime parameter SHALL match all resources in the collection that are not associated with a temporal geometry. |
“Intersects” means that the time (instant or period) specified in the parameter datetime includes a timestamp that is part of the temporal geometry of the resource (again, a time instant or period). For time periods this includes the start and end time.
Table 10
| Note | ISO 8601-2 distinguishes open start/end timestamps (double-dot) and unknown start/end timestamps (empty string). For queries, an unknown start/end has the same effect as an open start/end. |
Example 1 — A date-time
February 12, 2018, 23:20:52 UTC:
datetime=2018-02-12T23%3A20%3A52Z
For resources with a temporal property that is a timestamp (like lastUpdate), a date-time value would match all resources where the temporal property is identical.
For resources with a temporal property that is a date or a time interval, a date-time value would match all resources where the timestamp is on that day or within the time interval.
Example 2 — Intervals
February 12, 2018, 00:00:00 UTC to March 18, 2018, 12:31:12 UTC:
datetime=2018-02-12T00%3A00%3A00Z%2F2018-03-18T12%3A31%3A12Z
February 12, 2018, 00:00:00 UTC or later:
datetime=2018-02-12T00%3A00%3A00Z%2F..
March 18, 2018, 12:31:12 UTC or earlier:
datetime=..%2F2018-03-18T12%3A31%3A12Z
A template for the definition of the parameter in YAML according to OpenAPI 3.0 is available at datetime.yaml.
13.4. subset=datetime query parameter request and response
The behavior of the subset parameter is imported from the OGC API — Common subset module. The entire module is reproduced here. However, some considerations may not apply for datetime and the generic behavior is limited by predetermining the axis name of the generic datetime in an additional requirement, a permission and a recommendation at the end of this subsection.
| Requirements Module | |
| http://www.opengis.net/spec/ogcapi-common-2/1.0/rm/subset | |
| Target type | Web API Query Parameter |
The subset parameter is used to select a subset of a geospatial resource.
The subset parameter is defined as follows:
Requirement 19 | |
|---|---|
| A | The subset parameter SHALL have the following characteristics (using an Augmented Backus Naur Form (ABNF) fragment): SubsetSpec: "subset"=axisName(intervalOrPoint) |
| B | The axis name SHALL correspond to one of the axis of the Coordinate Reference System (CRS) of the target resource or else return a 400 status code. |
| C | If the intervalOrPoint values fall entirely outside the range of valid values defined for the identified axis, a 204 status code SHALL be returned. |
| D | For a CRS where an axis can wrap around, such as subsetting across the dateline (anti-meridian) in a geographic CRS, a low value greater than high SHALL be supported to indicate an extent crossing that wrapping point. |
NOTE When the intervalOrPoint values fall partially outside of the range of valid values defined by the CRS for the identified axis, the service is expected to return the non-empty portion of the resource resulting from the subset.
While the processing of the subset parameter is specific to the resource and operation for which it is applied, there is a general set of requirements which all implementations must address.
Requirement 20 | |
|---|---|
| Label | /req/collection/subset-response |
| A | Only that part of the resource that falls within the bounds of the subset expression SHALL be returned. |
| B | If a lower limit of the subset expression is populated with an asterix “*” THEN the minimum extent of the resource along that axis SHALL be selected. |
| C | If an upper limit of the subset expression is populated with an asterix “*” THEN the maximum extent of the resource along that axis SHALL be selected. |
Requirement 21 | |
|---|---|
| Label | /req/datetime/axis |
| A | To subset a generic time dimension, the server SHALL support “datetime” as axisname in the subset parameter |
Example 1 — A date-time (subset)
February 12, 2018, 23:20:52 UTC:
subset=datetime(%222018-02-12T23%3A20%3A52Z%22)
For resources with a temporal property that is a timestamp (like lastUpdate), a date-time value would match all resources where the temporal property is identical.
For resources with a temporal property that is a date or a time interval, a date-time value would match all resources where the timestamp is on that day or within the time interval.
Example 2 — Intervals (subset)
February 12, 2018, 00:00:00 UTC to March 18, 2018, 12:31:12 UTC:
subset=datetime(%222018-02-12T00%3A00%3A00Z%22%3A%222018-03-18T12%3A31%3A12Z%22)
February 12, 2018, 00:00:00 UTC or later:
subset=datetime(%222018-02-12T00%3A00%3A00Z%22%3A*)
March 18, 2018, 12:31:12 UTC or earlier:
subset=datetime(*%3A%222018-03-18T12%3A31%3A12Z%22)
13.5. Actual date & time response header
Recommendation 14 | |
|---|---|
| A | The server SHOULD add a HTTP header with OGCAPI-datetime as a name and a temporal geometry as a value, to indicate the instant or the temporal interval of the content of the resource. The temporal geometries value shall conform to the following syntax (using ABNF): interval = instant "/" instant The syntax of instant is specified by RFC 3339, 5.6. |
13.6. Closest date & time permission
Permission 7 | |
|---|---|
| Label | /per/datetime/closest |
| A | In case the requested tile is not available in the exact requested datetime for the tile matrix, tile column and tile row, the closest or last previous time for which data is available MAY be returned by the server. |
NOTE An Earth Observation use case where this permission is useful is to allow retrieving a tile of the last datetime where imagery is available, taking into account that a certain geographic area may only be observed at an interval of “every few days” and availability may be irregular and conditioned by clouds.
14. Requirement Class “OpenAPI Specification 3.0” API definition
14.1. Overview
Requirements class 8: Requirements Class OpenAPI 3.0 | |
|---|---|
| Target type | Web API |
| Dependency | http://www.opengis.net/spec/ogcapi_common-1/1.0/req/oas30 |
| Label | http://www.opengis.net/spec/ogcapi-tiles-1/1.0/req/oas30 |
This conformance class defines particularities of providing a definition of a Web API implementing this standard using OpenAPI Specification version 3.0.
14.2. Web API OpenAPI description
The OpenAPI definition provides a description of the complete list of API resources. Reading this description, an application will have the full picture of the resources that the API provides, how to retrieve them, and what responses are expected for successful and unsuccessful requests. Without this API description an application will be forced to traverse all links starting by the landing page to get an equivalent full list of resources.
The OGC API — Common — Part 1: Core (oas30) requirement class provides many details on general requirements that this requirements class adopts by dependency. In addition extra requirements are provided. Also, the OGC API — Common requirement class provides details on how to request an API definition.
14.2.1. Response
14.2.1.1. Completeness
The OpenAPI definition resulting as a response of this request need to take into consideration the relevant resources specified in this standard.
Requirement 22 | |
|---|---|
| Label | /req/oas30/completeness |
| A | The OpenAPI definition SHALL provide paths for all tileset, tilesets list and tile resources provided by the API instance |
| B | The paths defined in the OpenAPI definition SHALL be consistent with the links to the same resources provided by the landing page, collections, tileset and tilesets list resources. |
| C | The paths defined in the OpenAPI definition SHALL provide the description of the parameters that the tileset and tile resources need to operate that are specified in corresponding conformance classes |
14.2.1.2. Reusable API components
Reusable components for creating OpenAPI definitions for implementations of this OGC API can be found in http://schemas.opengis.net/ogcapi/tiles/part1/1.0/openapi
NOTE While this specification is in draft status, the components are available from https://github.com/opengeospatial/ogcapi-tiles/tree/master/openapi .
A server implementations of this OGC API can use the content in the openapi folder to generate a response for the openapi description. The ogcapi-tiles-1.yaml includes paths and components. An implementation should only include the paths that are implemented and remove the references to the rest. The components part includes parameters, responses and schemas that can be reused as-is. The api folder contains JSON files that are templates with enumerated values for collections (all, coverages or vector), styles, tileMatrixSets. A particular implementation of this API should enumerate the actual resources exposed by the API in the same way. The server can select to dynamically implement responses to /api/* (where * is replaced by all-collections, styles,… ) or hardcode the /api/* files with the actual list of resource identifiers in the enumerations.
To improve performance, the whole content of this folder can be bundled in a single document by executing a tool such as swagger-cli. This can be served for the OGC API — Common — Part 1 service-desc link from the landing page.
14.2.1.3. Path Operation Ids
The OpenAPI definition provides to a client application a set of paths that the client can use to interact with the API and get new resources. The OpenAPI description of each path provides a description of some parameters to use in the request and what to expect in the response. However, this standard is not proposing a fixed set of paths so there is an issue identifying the requirements classes pertaining to each path in an API instance. In other words, the OpenAPI description alone does not provide enough information and there is a need to identify the requirements classes pertaining to a resource (a path) and complete the information necessary for the client to implement the necessary logic to generate the request and understand the response. This standard proposes a suffix mechanism to be applied to the operationId property of the path to list the requirement classes pertaining to each path. Each path should have a unique operationId suffix, so it is expected that the OpenAPI instance provides a prefix to the proposed suffixes that make each operationId unique.
Requirement 23 | |
|---|---|
| Label | /req/oas30/operation-id |
| A | The paths defined in the OpenAPI definition SHALL have an operationId value ending with the relevant dot-separated suffix corresponding to the resource as specified in Table 11. |
Table 11 — OpenAPI operationId suffixes
| Origin | Styled | Data Type | Resource | operationId suffixes1 |
|---|---|---|---|---|
| With the resource types and origins described in this document | ||||
| DataSet6 | Vector | TileSetsList5 | .dataset.vector.getTileSetsList | |
| DataSet6 | Vector | TileSet4 | .dataset.vector.getTileSet | |
| DataSet6 | Vector | Tile3 | .dataset.vector.getTile | |
| DataSet6 | Styled8 | Vector | TileSetsList5 | .dataset.style.vector.getTileSetsList |
| DataSet6 | Styled8 | Vector | TileSet4 | .dataset.style.vector.getTileSet |
| DataSet6 | Styled8 | Vector | Tile3 | .dataset.style.vector.getTile |
| DataSet6 | Map10 | TileSetsList5 | .dataset.map.getTileSetsList | |
| DataSet6 | Map10 | TileSet4 | .dataset.map.getTileSet | |
| DataSet6 | Map10 | Tile3 | .dataset.map.getTile | |
| DataSet6 | Styled8 | Map10 | TileSetsList5 | .dataset.style.map.getTileSetsList |
| DataSet6 | Styled8 | Map10 | TileSet4 | .dataset.style.map.getTileSet |
| DataSet6 | Styled8 | Map10 | Tile3 | .dataset.style.map.getTile |
| Collection7 | Vector | TileSetsList5 | .collection.vector.getTileSetsList | |
| Collection7 | Vector | TileSet4 | .collection.vector.getTileSet | |
| Collection7 | Vector | Tile3 | .collection.vector.getTile | |
| Collection7 | Styled8 | Vector | TileSetsList5 | .collection.style.vector.getTileSetsList |
| Collection7 | Styled8 | Vector | TileSet4 | .collection.style.vector.getTileSet |
| Collection7 | Styled8 | Vector | Tile3 | .collection.style.vector.getTile |
| Collection7 | Coverage9 | TileSetsList5 | .collection.coverage.getTileSetsList | |
| Collection7 | Coverage9 | TileSet4 | .collection.coverage.getTileSet | |
| Collection7 | Coverage9 | Tile3 | .collection.coverage.getTile | |
| Collection7 | Map10 | TileSetsList5 | .collection.map.getTileSetsList | |
| Collection7 | Map10 | TileSet4 | .collection.map.getTileSet | |
| Collection7 | Map10 | Tile3 | .collection.map.getTile | |
| Collection7 | Styled8 | Map10 | TileSetsList5 | .collection.style.map.getTileSetsList |
| Collection7 | Styled8 | Map10 | TileSet4 | .collection.style.map.getTileSet |
| Collection7 | Styled8 | Map10 | Tile3 | .collection.style.map.getTile |
| With other potential resource types | ||||
| DataSet6 | other | TileSetsList5 | .dataset.*.getTileSetsList | |
| DataSet6 | other | TileSet4 | .dataset.*.getTileSet | |
| DataSet6 | other | Tile3 | .dataset.*.getTile | |
| DataSet6 | Styled8 | other | TileSetsList5 | .dataset.style.*.getTileSetsList |
| DataSet6 | Styled8 | other | TileSet4 | .dataset.style.*.getTileSet |
| DataSet6 | Styled8 | other | Tile3 | .dataset.style.*.getTile |
| Collection7 | other | TileSetsList5 | .collection.*.getTileSetsList | |
| Collection7 | other | TileSet4 | .collection.*.getTileSet | |
| Collection7 | other | Tile3 | .collection.*.getTile | |
| Collection7 | Styled8 | other | TileSetsList5 | .collection.style.*.getTileSetsList |
| Collection7 | Styled8 | other | TileSet4 | .collection.style.*.getTileSet |
| Collection7 | Styled8 | other | Tile3 | .collection.style.*.getTile |
| With other potential origins | ||||
| other | Vector | TileSetsList5 | #.vector.getTileSetsList | |
| other | Vector | TileSet4 | #.vector.getTileSet | |
| other | Vector | Tile3 | #.vector.getTile | |
| other | Styled8 | Vector | TileSetsList5 | #.style.vector.getTileSetsList |
| other | Styled8 | Vector | TileSet4 | #.style.vector.getTileSet |
| other | Styled8 | Vector | Tile3 | #.style.vector.getTile |
| other | Coverage9 | TileSetsList5 | #.coverage.getTileSetsList | |
| other | Coverage9 | TileSet4 | #.coverage.getTileSet | |
| other | Coverage9 | Tile3 | #.coverage.getTile | |
| other | Map10 | TileSetsList5 | #.map.getTileSetsList | |
| other | Map10 | TileSet4 | #.map.getTileSet | |
| other | Map10 | Tile3 | #.map.getTile | |
| other | Styled8 | Map10 | TileSetsList5 | #.style.map.getTileSetsList |
| other | Styled8 | Map10 | TileSet4 | #.style.map.getTileSet |
| other | Styled8 | Map10 | Tile3 | #.style.map.getTile |
| other | other | TileSetsList5 | #.*.getTileSetsList | |
| other | other | TileSet4 | #.*.getTileSet | |
| other | other | Tile3 | #.*.getTile | |
| other | Styled8 | other | TileSetsList5 | #.style.*.getTileSetsList |
| other | Styled8 | other | TileSet4 | #.style.*.getTileSet |
| other | Styled8 | other | Tile3 | #.style.*.getTile` |
| 1 ‘*’ represents a resource type to be defined in another relevant standard. ‘#’ represents an optional origin that could be defined in another relevant standard. 2 The suffixes derived from these resource types are not required by this standard and will be proposed by the relevant standard defining them. 3 The Tile resource is defined in Clause 7. 4 The TileSet resource is defined in Clause 8. 5 The TileSetsList resource is defined in Clause 9. 6 The DataSet origin is defined in Clause 10 and depends on OGC API — Common — Part 1: Core. 7 The Collection origin is defined in Clause 11 conformance class and depends on the Collections conformance class defined in OGC API — Common — Part 2: Geospatial data 8 Styled tilesets rely on the ability to list styles defined in OGC API — Styles2. 9 Coverage tilesets rely on the Coverage tiles conformance class defined in OGC API — Coverages — Part 1: Core2. 10 Map tilesets rely on the Map tiles conformance class defined in OGC API — Maps — Part 1: Core2. | ||||
15. Requirements class “XML” Tileset Metadata
15.1. Overview
This standard provides several resources describing the service (landing page), the geospatial data resources, the tileset lists and the tilesets informing the client on how to retrieve tiled data. XML is a data-interchange format designed to facilitate structured data interchange between applications. The intention of this section is to define an XML encoding that could be implemented by Tiles Web APIs, but not to exclude the possibility of defining additional metadata encodings that may be offered by a Tiles Web API. Web APIs may adopt this XML conformance class and declare conformance to it in the list of conformance classes supported by the Web API. The declaration of XML in the conformance classes supported does not mean that all the resources provided by the Web API support an XML representation, but a general support of XML is expected.
This clause specifies a requirements class for an XML representation that may be implemented by an OGC Web API for the tilesets list and a tileset resources in addition to the JSON representation required by Clause 8 and Clause 9.
If the service provides local TileMatrixSet definitions, it is recommended that those resources also support an XML representation conforming to the XML schema specified in the Two Dimensional Tile Matrix Set and Tileset Metadata standard.
Please refer to OGC API — Common conformance classes defining the XML representation of common resources such as the landing page, conformance and collections.
15.2. TileSet and TileSets List XML representation
Requirements class 9: Requirements Class XML | |
|---|---|
| Target type | Web API |
| Dependency | http://www.opengis.net/spec/tms/2.0/req/xml-tilesetmetadata |
| Dependency | http://www.opengis.net/spec/ogcapi-tiles-1/1.0/req/tileset |
| Dependency | http://www.opengis.net/spec/ogcapi-tiles-1/1.0/req/tilesets-list |
| Label | http://www.opengis.net/spec/ogcapi-tiles-1/1.0/req/xml |
15.2.1. Operation
Requirement 24 | |
|---|---|
| Label | /req/xml/definition |
| A | 200-responses of the server SHALL support the application/xml media type for the Tilesets list and TileSet resources. |
15.2.2. Response
Requirement 25 | |
|---|---|
| A | Every request to a TileSets list or TileSet resource which:
SHALL include, or link to, a payload encoded according to the Extensible Markup Language (XML) 1.0 |
| B | The payload for these responses SHALL conform with the XML Schema specified for the resource in the OGC 17-083r4: OGC Two Dimensional Tile Matrix Set and Tile Set Metadata. |
16. Requirements classes for tile encodings
The OGC API Tiles is designed to support tiling data that can potentially be encoded and provided in many of the existing geospatial formats or new ones that could be invented in the future. Web APIs may adopt these encodings and declare conformance to them in the list of conformance classes supported by the Web API. The intention of this section is NOT to limit the number of encodings offered by a Tiles Web API but to provide a minimum set of encodings that could be implemented by many Tiles Web APIs as well as to provide a practical way to test conformance to the standard. For each of these encodings, a requirements class is defined. Web APIs are free to support other encodings and data formats that can be convenient in each case, and use them despite the fact that they may not be listed as supported conformance classes by the Web API. In addition, the declaration of an encoding in the conformance classes supported does not mean that all the resources provided by the Web API should support all of them. Partial support could be conditioned by the different the nature of the data behind each collection.
16.1. Overview
This clause specifies six pre-defined requirements classes for encodings to be used by the tiles of the OGC API implementation:
NOTE None of the encodings specified here is mandatory and an implementation of this standard may implement none of them but implement other encodings instead.
16.2. Requirement Class “PNG”
One fundamental use case for tiles is immediate visualization in a web browser. In these circumstances, selecting an encoding that can be natively interpreted by the web browser is fundamental. The PNG is one of the most popular formats in de web defined by the ISO Information technology — Computer graphics and image processing — Portable Network Graphics (PNG): Functional specification. ISO/IEC 15948:2003 (E), also available by the W3C in https://www.w3.org/TR/PNG.
PNG supports lossless data compression. PNG supports palette-based images (with palettes of 24-bit RGB or 32-bit RGBA colors), grayscale images (with or without an alpha channel for transparency), and full-color non-palette-based RGB or RGBA images. The PNG working group designed the format for transferring images on the Internet, not for professional-quality print graphics; therefore non-RGB color spaces such as CMYK are not supported.
Requirements class 10: Requirements Class PNG | |
|---|---|
| Target type | Web API |
| Dependency | [ISO_IEC_15948_standard] |
| Dependency | http://www.opengis.net/spec/ogcapi-tiles-1/1.0/req/core |
| Label | http://www.opengis.net/spec/ogcapi-tiles-1/1.0/req/png |
Requirement 26 | |
|---|---|
| Label | /req/png/content |
| A | Every 200-response of the server with the media type image/png SHALL be a PNG document representing only one tile |
| B | The colors of the PNG SHALL represent the geospatial features or coverage values in the tile. |
| C | The alpha channel of the PNG SHALL be used when partial transparency is required |
| D | All tiles representing parts of the same resource or resources and using the same style SHALL follow the same portrayal rules |
NOTE The way the colors in the PNG are mapped to geospatial features or coverage values is out of scope of this standard. However, a common set of portrayal rules for all tiles representing part of the same resource is essential, as adjacent tiles are normally represented one next to the other and presented as a single image to the user.
16.3. Requirement Class “JPEG”
One fundamental use case for tiles is immediate visualization in a web browser. In these circumstances, selecting an encoding that can be natively interpreted by the web browser is fundamental. The JPEG is one of the most popular formats in de web defined by the ITU-T Recommendation T.81 and the ISO/IEC 10918-1.
The JPEG compression algorithm operates at its best on photographs and paintings with smooth variations of tone and color. It is best used for color and grayscale still images, but not for binary images. JPEG is also the most common format saved by digital cameras. However, JPEG is not well suited for line drawings and other textual or iconic graphics, where the sharp contrasts between adjacent pixels can cause noticeable artifacts. Such images are better saved in a lossless graphics format such as PNG. Because JPEG is a lossy compression method, which reduces the image fidelity, it is inappropriate for exact reproduction of imaging data.
Requirements class 11: Requirements Class JPEG | |
|---|---|
| Target type | Web API |
| Dependency | [ISO_IEC_10918-1] |
| Dependency | http://www.opengis.net/spec/ogcapi-tiles-1/1.0/req/core |
| Label | http://www.opengis.net/spec/ogcapi-tiles-1/1.0/req/jpeg |
Requirement 27 | |
|---|---|
| Label | /req/jpeg/content |
| A | Every 200-response of the server with the media type image/jpeg SHALL be a JPEG document representing only one tile |
| B | The colors of the JPEG SHALL represent coverage values in the tile. |
| C | All tiles representing parts of the same resource or resources and using the same style SHALL follow the same portrayal rules |
NOTE 1 The way the colors in the JPEG are mapped to geospatial features or coverage values is out of scope of this standard. However, a common set of portrayal rules for all tiles representing part of the same resource is essential, as adjacent tiles are normally represented one next to the other and presented as a single image to the user.
NOTE 2 JPEG is an ideal support for remote sensing imagery. The use of JPEG to represent linear features or color solid polygons is not recommended.
16.4. Requirement Class “TIFF”
One use case for tiles is to distribute fragmented coverage values as regular grids. In these circumstances, selecting an encoding that is able to story grid values in their original format and eventually compress them using lossless compression is the right solution. The TIF is one of the older formats but still one of the most popular formats to preserve arrays of data values and defined by the TIFF v6 specification owned by Adobe Systems.
TIFF is a flexible, adaptable file format for handling images and data. The ability to store data in a lossless format makes a TIFF file a useful image archive, because, unlike standard JPEG files, a TIFF file using lossless compression such as PackBits or LZW compression.
Requirements class 12: Requirements Class TIFF | |
|---|---|
| Target type | Web API |
| Dependency | [TIFF_V6] |
| Dependency | http://www.opengis.net/spec/ogcapi-tiles-1/1.0/req/core |
| Label | http://www.opengis.net/spec/ogcapi-tiles-1/1.0/req/tiff |
Requirement 28 | |
|---|---|
| Label | /req/tiff/content |
| A | Every 200-response of the server with the media type image/tiff SHALL be a TIFF document representing only one tile |
| B | The TIFF file SHALL be organized in strips (avoiding organization in internal tiles). |
| C | All tiles representing parts of the same resource or resources and using the same style SHALL follow the same portrayal rules or represent data with the same reference and units of measure. |
NOTE TIFF is an ideal support for geospatial grid data in its original format. However, it also can be used for image palette or RGB imagery.
Recommendation 15 | |
|---|---|
| Label | /rec/tiff/geotiff |
| A | A TIFF encoding SHOULD include georeference information in GeoTIFF format. |
Requirement 29 | |
|---|---|
| Label | /req/tiff/geotiff |
| A | If the TIFF encoding incorporates GeoTIFF georeference, this information SHALL be consistent with the TileMatrixSet, TileMatrix, TileRow and TileCol |
16.5. Requirement Class “NetCDF”
For a case of multidimensional regular grid tiles, as defined in Annex J of the 2D-TMS Standards [OGC 17-083r4], there is a need for a format able to store multidimensional data in a natural way. The NetCDF is one of the most popular formats for scientific data that is able store multi-dimensional arrays of data values. It is defined by the UCAR-Unidata.
Requirements class 13: Requirements Class NetCDF | |
|---|---|
| Target type | Web API |
| Dependency | OGC 10-090r3 OGC Network Common Data Form NetCDF Core Encoding Standard version 1.0 |
| Dependency | http://www.opengis.net/spec/ogcapi-tiles-1/1.0/req/core |
| Label | http://www.opengis.net/spec/ogcapi-tiles-1/1.0/req/netcdf |
Requirement 30 | |
|---|---|
| Label | /req/netcdf/content |
| A | Every 200-response of the server with the media type application/netcdf or application/x-netcdf SHALL be a NetCDF document representing only one tile |
| B | The NetCDF file SHALL contain only data in two or more dimensions |
Requirement 31 | |
|---|---|
| Label | /req/netcdf/geo |
| A | If the NetCDF encoding incorporates georeference, this information SHALL be consistent with the TileMatrixSet, TileMatrix, TileRow and TileCol |
16.6. Requirement Class “GeoJSON”
GeoJSON is a commonly used format for representing features with geometries and other properties. It is simple to understand and well supported by tools and software libraries. Since most Web developers are comfortable with using a JSON-based formats supporting GeoJSON is recommended for vector tiles, if the feature data can be represented in GeoJSON for the intended use.
Requirements class 14: Requirements Class GeoJSON | |
|---|---|
| Target type | Web API |
| Dependency | [GeoJSON] |
| Dependency | http://www.opengis.net/spec/ogcapi-tiles-1/1.0/req/core |
| Label | http://www.opengis.net/spec/ogcapi-tiles-1/1.0/req/geojson |
Requirement 32 | |
|---|---|
For each UML class defined or referenced in the Relief Package: | |
| A | Every 200-response of the server with the media type application/geo+json SHALL be a GeoJSON document representing only one tile. |
| B | The root of the GeoJSON document SHALL be
|
| C | Regardless of the TileMatrixSet CRS, the geometry coordinates SHALL be in CRS84 as stated in the GeoJSON standard unless a prior arrangement applies to use an alternative coordinate reference system. The fact that a TileMatrixSet is used does not constitute a prior arrangement. For example, an extension could negotiate another CRS for coordinates with a query parameter. |
Permission 8 | |
|---|---|
| Label | /rec/geojson/overflow |
| A | A GeoJSON content of a tile can contain features that are partially outside of the tile bounding box. |
16.7. Requirement Class “Mapbox Vector Tiles”
Mapbox Vector Tiles is a well known format for representing features with geometries in tile [15]. The Mapbox Vector Tile format uses Google Protocol Buffers as a encoding format. Protocol Buffers are a language-neutral, platform-neutral extensible mechanism for serializing structured binary data. A Mapbox Vector Tile represents data based on a square extent within a tile matrix set. However, a Mapbox Vector Tile does not contain information about its bounds and TileMatrixSet. The file format assumes that the client knows the bounds and TileMatrixSet of the file before decoding it.
Requirements class 15: Requirements Class MVT | |
|---|---|
| Target type | Web API |
| Dependency | Mapbox Vector Tiles [15] |
| Dependency | http://www.opengis.net/spec/ogcapi-tiles-1/1.0/req/core |
| Label | http://www.opengis.net/spec/ogcapi-tiles-1/1.0/req/mvt |
Requirement 33 | |
|---|---|
| Label | /req/mvt/content |
| A | Every 200-response of the server with the media type application/vnd.mapbox-vector-tile SHALL be a Mapbox Vector Tile document representing only one tile. |
| B | A feature SHALL contain a geometry field. A feature SHALL contain a type field as described in the Geometry Types section. |
| C | The grid space for the MVT coordinates SHALL map linearly to the coordinates in the tile extent expressed in the Tileset CRS unless a prior arrangement applies to use an alternative CRS; and in this case the linear mapping SHALL be done to the alternative CRS and not with the Tileset CRS. For example, an extension could negotiate another CRS for coordinates with a query parameter. In particular the 0,0 coordinate in the MVT maps to the top-left corner of the tile. The bottom-right corner of the tile corresponds the bottom-right corner of the MVT grid. |
NOTE The support of Mapbox Vector Tiles does not make the OGC API dependent on the Mapbox Vector Tile Specification. The support of Mapbox Vector Tiles is completely optional in a Web API. This requirements class is completely independent of the version of Mapbox Vector Tiles and its future evolution.
Annex A
(normative)
Abstract Test Suite
An implementation of this standard must satisfy the following system characteristics to be conformant with this specification.
A.1. Conformance Class Core
Conformance class A.1 | |
|---|---|
| Subject | Core |
| Target type | Web API |
| Label | http://www.opengis.net/spec/ogcapi-tiles-1/1.0/conf/core |
A.1.1. Declaration of conformance classes
A.1.1.1. Response
Table A.1
| Abstract Test 1 | /conf/core/conformance-success |
| Test Purpose | Validate that the Conformance Declaration response complies with the required structure and contents. |
| Requirement | /req/core/conformance-success |
| Test Method |
|
A.1.2. A tile
A.1.2.1. Operation
Table A.2
| Abstract Test 2 | /conf/core/tc-op |
| Test Purpose | With a provided template, validate that tiles are available for the right GET request. |
| Requirement | /req/core/tc-op |
| Test Method |
|
NOTE In practice to test the core conformance class the user of the test should provide a TileMatrixSet definition, a URL template (that contains the endpoint for tiles) with specific variable names, and a range of valid values for those variables and build URLs and execute the test. | |
A.1.2.2. Parameter tileMatrix
Table A.3
| Abstract Test 3 | /conf/core/tc-tilematrix-definition |
| Test Purpose | Validate that there is a tileMatrix definition. |
| Requirement | /req/core/tc-tilematrix-definition |
| Test Method |
|
A.1.2.3. Parameter tileRow
Table A.4
| Abstract Test 4 | /conf/core/tc-tilerow-definition |
| Test Purpose | Validate that there is a tileRow definition. |
| Requirement | /req/core/tc-tilerow-definition |
| Test Method |
|
A.1.2.4. Parameter tileCol
Table A.5
| Abstract Test 5 | /conf/core/tc-tilecol-definition |
| Test Purpose | Validate that there is a tileCol definition. |
| Requirement | /req/core/tc-tilecol-definition |
| Test Method |
|
A.1.2.5. Response
Table A.6
| Abstract Test 6 | /conf/core/tc-success |
| Test Purpose | Validate that a successful execution with data responds with a HTTP status code 200, the format is consistent with the requested and the elements represented in the tile are the ones present in the geographical area. |
| Requirement | /req/core/tc-success |
| Test Method |
|
A.1.2.6. Error conditions
Table A.7
| Abstract Test 7 | /conf/core/tc-error |
| Test Purpose | Validate that the request of tile that is out-of-range or empty, responds the right content |
| Requirement | /req/core/tc-error |
| Test Method |
|
A.2. Conformance Class “TileSet”
Conformance class A.2 | |
|---|---|
| Subject | TileSet |
| Target type | Web API |
| Label | http://www.opengis.net/spec/ogcapi-tiles-1/1.0/conf/tileset |
A.2.1. Tileset resource
A.2.1.1. Response
Table A.8
| Abstract Test 8 | /conf/tileset/description |
| Test Purpose | Validate the content of a tileset description |
| Requirement | /req/tileset/description |
| Test Method |
|
A.3. Conformance Class “TileSets List”
Conformance class A.3 | |
|---|---|
| Subject | TileSets List |
| Target type | Web API |
| Label | http://www.opengis.net/spec/ogcapi-tiles-1/1.0/conf/tilesets-list |
A.3.1. Tilesets list
A.3.1.1. Response
Table A.9
| Abstract Test 9 | /conf/tilesets-list/tileset-links |
| Test Purpose | Validate that the content of a tileset list |
| Requirement | /req/tilesets-list/tileset-links |
| Test Method |
|
A.4. Conformance Class “Dataset Tile Sets”
Conformance class A.4 | |
|---|---|
| Subject | Dataset Tile Sets |
| Target type | Web API |
| Label | http://www.opengis.net/spec/ogcapi-tiles-1/1.0/conf/dataset-tilesets |
A.4.1. Web API landing page
A.4.1.1. Response
Table A.10
| Abstract Test 10 | /conf/dataset-tilesets/landingpage |
| Test Purpose | Validate that it is possible to retrieve the tilesets list for the dataset |
| Requirement | /req/dataset-tilesets/landingpage |
| Test Method | 1.- If the API has mechanism to expose root resources (e.g., a landing page), validate that the API advertises at least one URIs to retrieve tilesets list provided by this service with a link having a rel value: http://www.opengis.net/def/rel/ogc/1.0/tilesets-vector, http://www.opengis.net/def/rel/ogc/1.0/tilesets-map or http://www.opengis.net/def/rel/ogc/1.0/tilesets-coverage. |
A.4.2. Dataset tilesets
A.4.2.1. Operation
Table A.11
| Abstract Test 11 | /conf/dataset-tilesets/operation |
| Test Purpose | Validate that there is an operation to get the tilesets list. |
| Requirement | /req/dataset-tilesets/operation |
| Test Method |
|
A.5. Conformance Class “Geo Data Resource TileSets”
Conformance class A.5 | |
|---|---|
| Subject | Geo Data Resource TileSets |
| Target type | Web API |
| Label | http://www.opengis.net/spec/ogcapi-tiles-1/1.0/conf/geodata-tilesets |
A.5.1. Geospatial data resources
Table A.12
| Abstract Test 12 | /conf/geodata-tilesets/desc-links |
| Test Purpose | Validate that it is possible to retrieve the tilesets list for the geospatial resource |
| Requirement | /req/geodata-tilesets/desc-links |
| Test Method |
|
A.5.2. Geospatial data resources tilesets list
A.5.2.1. Tilesets path
Table A.13
| Abstract Test 13 | /conf/geodata-tilesets/operation |
| Test Purpose | Validate that there is an operation to get the tilesets list. |
| Requirement | /req/geodata-tilesets/operation |
| Test Method |
|
A.6. Conformance Class “Collections Selection”
Conformance class A.6 | |
|---|---|
| Subject | Collections Selection |
| Target type | Web API |
| Label | http://www.opengis.net/spec/ogcapi-tiles-1/1.0/conf/collections-selection |
A.6.1. Operation
A.6.1.1. Parameter collections
Table A.14
| Abstract Test 14 | /conf/collections-selection/query-collections |
| Test Purpose | Validate support of the optional parameter collections. |
| Requirement | /req/collections-selection/query-collections |
| Test Method | Given: A tileset for an origin consisting of multiple geospatial data sub-resources (e.g., described in the tileset metadata as being comprised of multiple layers). When: Requesting resources either for the tileset or for individual tiles (e.g., a dataset tileset at {datasetAPI}/tiles/WebMercatorQuad and dataset tiles at {datasetAPI}/tiles/WebMercatorQuad/{tileMatrix}/{tileRow}/{tileCol}), with a collections query parameter consisting of a comma-separated list of collectionIDs (consistent with the collection identifiers making up that tileset, as described for example, in the tileset metadata layers). Then: Assert that the parameter is accepted for valid lists of collectionIDs. Note that servers are free to restrict valid combinations of collectionIDs (permission /per/collections-selection/valid-collections). Tests should be restricted to few collections e.g., between one and five. If the sub-collections are also available individually, only collections advertising support for the same TileMatrixSet, CRS and encodings as used for the request should be selected. |
A.6.1.2. Response
Table A.15
| Abstract Test 15 | /conf/collections-selection/collections-response |
| Test Purpose | Validate response when using collections parameter. |
| Requirement | /req/collections-selection/collections-response |
| Test Method | Given: Requests described in the previous abstract test (query-collections) When: The request is successful Then: Assert that the response to tilesets and tiles requests only include the selected collections. For tilesets, verify that only the selected collections are included in the layers. For tiles, verify that the content is limited to the data pertaining to the selected collections. If more than one collection is selected and no style applied specifies otherwise, validate that the selected collections are included in the response starting by the first (leftmost in the comma-separated list) and ending by the last (rightmost). In map tiles, this will result in the first collection being portrayed at the bottom and the others are rendered on top of the previous ones, one by one (the rightmost collection will become topmost in the portrayal). |
A.7. Conformance Class DateTime
Conformance class A.7 | |
|---|---|
| Subject | datetime |
| Target type | Web API |
| Label | http://www.opengis.net/spec/ogcapi-tiles-1/1.0/conf/datetime |
A.7.1. datetime query parameter request and response
Table A.16
| Abstract Test 16 | /conf/collections/rc-op-datetime |
| Test Purpose | Validate that resources can be identified and extracted from an API server using the datetime query parameter. |
| Requirement | /req/collections/rc-datetime-definition |
| Test Method |
|
Table A.17
| Abstract Test 17 | /conf/collections/rc-datetime-definition |
| Test Purpose | Validate that the dateTime query parameter is constructed correctly. |
| Requirement | |
| Test Method | Verify that the datetime query parameter complies with the following definition (using an OpenAPI Specification 3.0 fragment): name: datetime |
Table A.18
| Abstract Test 18 | /conf/collections/rc-datetime-response |
| Test Purpose | Validate that the datetime query parameter is processed correctly. |
| Requirement | /req/collections/rc-datetime-definition |
| Test Method | DO FOR each Collection in the collections element of the response:
|
A.7.2. subset=datetime query parameter request and response
Table A.19
| Abstract Test 19 | /conf/collections/rc-op-subset |
| Test Purpose | Validate that resources can be identified and extracted from an API server using the subset query parameter. |
| Requirement | /req/collections/rc-subset-definition |
| Test Method |
|
Table A.20
| Abstract Test 20 | /conf/collections/rc-subset-definition |
| Test Purpose | Validate that the subset query parameter is constructed correctly. |
| Requirement | |
| Test Method | Verify that the subset query parameter complies with the following definition (using an OpenAPI Specification 3.0 fragment): SubsetSpec: "subset"=axisName(intervalOrPoint) |
Table A.21
| Abstract Test 21 | /conf/collections/rc-subset-response |
| Test Purpose | Validate that the subset query parameter is processed correctly. |
| Requirement | /req/collections/rc-subset-definition |
| Test Method | DO FOR each Collection in the collections element of the response:
|
Table A.22
| Abstract Test 22 | /conf/datetime/axis |
| Test Purpose | Validate that a request of a subset of a datetime dimension is supported by the server |
| Requirement | /req/datetime/axis |
| Test Method |
|
A.8. Conformance Class OpenAPI 3.0 Specification
Conformance class A.8 | |
|---|---|
| Subject | OpenAPI Specification 3.0 |
| Target type | Web API |
| Label | http://www.opengis.net/spec/ogcapi-tiles-1/1.0/conf/oas30 |
A.8.1. Web API OpenAPI definition response
Table A.23
| Abstract Test 23 | /conf/oas30/completeness |
| Test Purpose | Validate OpenAPI completeness and consistency |
| Requirement | /req/oas30/completeness |
| Test Method |
|
Table A.24
| Abstract Test 24 | /conf/oas30/completeness |
| Test Purpose | Validate use of operationID suffixes in OpenAPI definition |
| Requirement | /req/oas30/operationids |
| Test Method |
|
A.9. Conformance Class “XML” Tileset Metadata
Conformance class A.9 | |
|---|---|
| Subject | XML |
| Target type | Web API |
| Label | http://www.opengis.net/spec/ogcapi-tiles-1/1.0/conf/xml |
A.9.1. XML encoding
Table A.25
| Abstract Test 25 | /conf/xml/definition |
| Test Purpose | Validate the support of the required media type |
| Requirement | /req/xml/definition |
| Test Method |
|
Table A.26
| Abstract Test 26 | /conf/xml/content |
| Test Purpose | Validate the particularities of a XML response |
| Requirement | /req/xml/content |
| Test Method |
|
A.10. Conformance Classes for tile encodings
A.10.1. Conformance Class “PNG”
Conformance class A.10 | |
|---|---|
| Subject | PNG |
| Target type | Web API |
| Label | http://www.opengis.net/spec/ogcapi-tiles-1/1.0/conf/png |
A.10.1.1. PNG encoding
Table A.27
| Abstract Test 27 | /conf/png/content |
| Test Purpose | Validate the particularities of a PNG response |
| Requirement | /req/png/content |
| Test Method |
|
A.10.2. Conformance Class “JPEG”
Conformance class A.11 | |
|---|---|
| Subject | JPEG |
| Target type | Web API |
| Label | http://www.opengis.net/spec/ogcapi-tiles-1/1.0/conf/jpeg |
A.10.2.1. JPEG Encoding
Table A.28
| Abstract Test 28 | /conf/jpeg/content |
| Test Purpose | Validate the particularities of a JPEG response |
| Requirement | /req/jpeg/content |
| Test Method |
|
A.10.3. Conformance Class “TIFF”
Conformance class A.12 | |
|---|---|
| Subject | TIFF |
| Target type | Web API |
| Label | http://www.opengis.net/spec/ogcapi-tiles-1/1.0/conf/tiff |
A.10.3.1. TIFF encoding
Table A.29
| Abstract Test 29 | /conf/tiff/content |
| Test Purpose | Validate the particularities of a TIFF response |
| Requirement | /req/tiff/content |
| Test Method |
|
Table A.30
| Abstract Test 30 | /conf/tiff/geotiff |
| Test Purpose | Validate GeoTIFF consistency of the georeference |
| Requirement | /req/tiff/geotiff |
| Test Method |
|
A.10.4. Conformance Class “NetCDF”
Conformance class A.13 | |
|---|---|
| Subject | NetCDF |
| Target type | Web API |
| Label | http://www.opengis.net/spec/ogcapi-tiles-1/1.0/conf/netcdf |
A.10.4.1. NetCDF encoding
Table A.31
| Abstract Test 31 | /conf/netcdf/content |
| Test Purpose | Validate the particularities of a NetCDF response |
| Requirement | /req/netcdf/content |
| Test Method |
|
Table A.32
| Abstract Test 32 | /conf/netcdf/geo |
| Test Purpose | Validate NetCDF consistency of the georeference |
| Requirement | /req/netcdf/geo |
| Test Method |
|
A.10.5. Conformance Class “GeoJSON”
Conformance class A.14 | |
|---|---|
| Subject | GeoJSON |
| Target type | Web API |
| Label | http://www.opengis.net/spec/ogcapi-tiles-1/1.0/conf/geojson |
A.10.5.1. GeoJSON Encoding
Table A.33
| Abstract Test 33 | /conf/geojson/content |
| Test Purpose | Validate the particularities of a GeoJSON response |
| Requirement | /req/geojson/content |
| Test Method |
|
A.10.6. Conformance Class “Mapbox Vector Tiles”
Conformance class A.15 | |
|---|---|
| Subject | Mapbox Vector Tiles |
| Target type | Web API |
| Label | http://www.opengis.net/spec/ogcapi-tiles-1/1.0/conf/mvt |
A.10.6.1. Mapbox Vector Tiles Encoding
Table A.34
| Abstract Test 34 | /conf/mvt/content |
| Test Purpose | Validate the particularities of a Mapbox Vector Tiles response |
| Requirement | /req/mvt/content |
| Test Method |
|
Annex B
(informative)
Revision history
| Date | Release | Editor | Primary clauses modified | Description |
|---|---|---|---|---|
| 2019-03-21 | Template | C. Heazel | all | initial template |
| 2020-04-15 | 0.0.1 | J. Maso | all | Several |
| 2020-04-21 | 0.0.2 | J. Maso | all | Several |
| 2020-05-21 | 0.0.3 | G. Hobona | Annex A | Fixed Conformance Class URI and added abstract tests |
| 2022-03-30 | 0.8.0 | J. Maso & J. St-Louis | all | Candidate standard version for public comments |
| 2022-06-16 | 0.9.0 | J. Maso & J. St-Louis | all | Initial version presented to the TC for approval |
| 2022-07-14 | 1.0.0 draft 1 | J. Maso & J. St-Louis | several | Editorial fixes; synchronized OpenAPI schemas with 2DTMS & TileSet metadata standard |
| 2022-09-12 | 1.0.0 draft 2 | G. Hobona | all | Conversion to metanorma |
| 2022-09-15 | 1.0.0 | J. Maso & J. St-Louis | several | Initial version 1.0 |
Bibliography
This standard is deeply inspired by concepts defined in the following documents that preceded it. This standard offers an alternative interface to fulfill similar tasks described in these references:
[1] Cavazzi S.: OGC Testbed-13: Vector Tiles Engineering Report (OGC 17-041), https://docs.ogc.org/per/17-041.html
[2] Masó J.: Map Tile Service (WMTS) Simple Profile, version 1.0 (OGC 13-082r2), http://docs.ogc.org/is/13-082r2/13-082r2.html
[3] Meek S.: OGC Vector Tiles Pilot: Summary Engineering Report (OGC 18-086r1), https://docs.ogc.org/per/18-086r1.html
[4] Taleisnik S.: OGC Vector Tiles Pilot 2: Tile Set Metadata Engineering Report (OGC 19-082r1), http://docs.ogc.org/per/19-082r1.html#_metadatadate
[5] Vretanos P.A.: OGC Vector Tiles Pilot: WFS 3.0 Vector Tiles Extension Engineering Report (OGC 18-078), https://docs.ogc.org/per/18-078.html
[6] Vretanos P.A.: OGC Vector Tiles Pilot: WMTS Vector Tiles Extension Engineering Report (OGC 18-083), https://docs.ogc.org/per/18-083.html
[7] Yutzler J.: Vector Tiles Pilot Extension Engineering Report (OGC 18-101), http://docs.ogc.org/per/18-101.html
[8] W3C/OGC: Spatial Data on the Web Best Practices, W3C Working Group Note 28 September 2017, https://www.w3.org/TR/sdw-bp/
[9] W3C: Data on the Web Best Practices, W3C Recommendation 31 January 2017, https://www.w3.org/TR/dwbp/
[10] Masó J., Pomakis K. and Julià N.: Web Map Tile Service (WMTS), version 1.0. (OGC 07-057r7) http://portal.ogc.org/files/?artifact_id=35326
[11] de la Beaujardiere J.: Web Map Service (WMS), version 1.3.0 (OGC 06-042), http://portal.ogc.org/files/?artifact_id=14416
[12] Hobona G, Idol, T.: OGC Vector Tiles Pilot 2: Summary Engineering Report (OGC 19-088r2), http://docs.ogc.org/per/19-088r2.html
[13] IANA: Link Relation Types, https://www.iana.org/assignments/link-relations/link-relations.xml
[14] Ingensand J. and Maia K.: OGC Vector Tiles Pilot: Tiled Feature Data Conceptual Model Engineering Report (OGC 18-076), https://docs.ogc.org/per/18-076.html
[15] Mapbox: Mapbox Vector Tile specification. https://github.com/mapbox/vector-tile-spec
[16] Masó J.: OGC Testbed-15: Maps and Tiles API Engineering Report (OGC 19-069), https://docs.ogc.org/per/19-069.html